summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-05-09 10:03:45 +0200
committerTobrun <tobrun@mapbox.com>2016-05-20 12:00:02 +0200
commit69ae499a88a37b7ad21e53de8929930f8c22e0e3 (patch)
treeff2b9d5ba16af63f1b586588cf91ff32ab928ef9 /platform
parentd8dfc921b4d9c9f15bdd33c45ef7d2d77e04ba1b (diff)
downloadqtlocation-mapboxgl-69ae499a88a37b7ad21e53de8929930f8c22e0e3.tar.gz
[android] #3276 - View Marker click listener integration
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java33
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java16
2 files changed, 44 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index 36a9c995c7..a017475cfd 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -71,6 +71,7 @@ public class MapboxMap {
private MapboxMap.InfoWindowAdapter mInfoWindowAdapter;
private MapboxMap.MarkerViewAdapter mMarkerViewAdapter;
+ private OnMarkerViewClickListener mOnMarkerViewClickListener;
private boolean mMyLocationEnabled;
private boolean mAllowConcurrentMultipleInfoWindows;
@@ -648,12 +649,23 @@ public class MapboxMap {
}
List<Marker> inBoundsMarkers = result.getInBounds();
- for (Marker marker : inBoundsMarkers) {
+ for (final Marker marker : inBoundsMarkers) {
convertView = viewSimplePool.acquire();
View adaptedView = mMarkerViewAdapter.getView(marker, convertView, mMapView);
- mMarkerViews.append(marker.getId(), adaptedView);
- if (convertView == null) {
- mMapView.addView(adaptedView);
+ if(adaptedView!=null) {
+ adaptedView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if(mOnMarkerViewClickListener!=null){
+ mOnMarkerViewClickListener.onMarkerClick(marker, v);
+ }
+ }
+ });
+
+ mMarkerViews.append(marker.getId(), adaptedView);
+ if (convertView == null) {
+ mMapView.addView(adaptedView);
+ }
}
}
}
@@ -1185,6 +1197,14 @@ public class MapboxMap {
return mMarkerViewAdapter;
}
+ public void setOnMarkerViewClickListener(@Nullable OnMarkerViewClickListener listener){
+ mOnMarkerViewClickListener = listener;
+ }
+
+ public OnMarkerViewClickListener getOnMarkerViewClickListener() {
+ return mOnMarkerViewClickListener;
+ }
+
//
// InfoWindow
//
@@ -1779,6 +1799,11 @@ public class MapboxMap {
View getView(@NonNull U marker, @Nullable View convertView, @NonNull ViewGroup parent);
}
+ public interface OnMarkerViewClickListener{
+
+ void onMarkerClick(@NonNull Marker marker, @NonNull View view);
+ }
+
/**
* Interface definition for a callback to be invoked when the the My Location view changes location.
*
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java
index 7467d2993d..de4aa81a60 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java
@@ -7,14 +7,18 @@ import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.Toast;
import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions;
+import com.mapbox.mapboxsdk.annotations.Marker;
+import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
@@ -50,7 +54,9 @@ public class ViewMarkerActivity extends AppCompatActivity implements OnMapReadyC
}
@Override
- public void onMapReady(MapboxMap mapboxMap) {
+ public void onMapReady(final MapboxMap mapboxMap) {
+
+ // Add country markers
List<BaseMarkerOptions> countries = new ArrayList<>();
countries.add(new CountryMarkerOptions().title("China").abbrevName("ch").flagRes(R.drawable.ic_china).position(new LatLng(31.230416, 121.473701)));
countries.add(new CountryMarkerOptions().title("United States").abbrevName("us").flagRes(R.drawable.ic_us).position(new LatLng(38.907192, -77.036871)));
@@ -58,9 +64,17 @@ public class ViewMarkerActivity extends AppCompatActivity implements OnMapReadyC
countries.add(new CountryMarkerOptions().title("Germany").abbrevName("de").flagRes(R.drawable.ic_germany).position(new LatLng(52.520007, 13.404954)));
mapboxMap.addMarkers(countries);
+ // Add view marker adapter
mapboxMap.setMarkerViewAdapter(new CountryAdapter(this));
+ mapboxMap.setOnMarkerViewClickListener(new MapboxMap.OnMarkerViewClickListener() {
+ @Override
+ public void onMarkerClick(@NonNull Marker marker, @NonNull View view) {
+ Log.d(MapboxConstants.TAG, "Country clicked " + ((CountryMarker) marker).getAbbrevName());
+ }
+ });
}
+
private static class CountryAdapter implements MapboxMap.MarkerViewAdapter<CountryMarker> {
private LayoutInflater inflater;