我正在使用MapBox SDK进行离线地图我在地图上添加了多个标记, 如何获得标记的点击事件。 有没有办法获得标记的点击事件?
答案 0 :(得分:5)
我使用mapbox sdk提供的名为ItemizedIconOverlay的功能,在mapbox中获得了标记点击事件的解决方案。
我做了如下:
public void placeGTMarker() {
alMarkerGT = new ArrayList<Marker>();
marker = new Marker("my Marker", "", latLng);
marker.setMarker(activity.getResources()
.getDrawable(R.drawable.map_pin));
mv.addMarker(marker);
alMarkerGT.add(marker);
itemizedIconOverlayGT = new ItemizedIconOverlay(activity, alMarkerGT,
new OnItemGestureListener<Marker>() {
@Override
public boolean onItemSingleTapUp(int index, Marker item) {
return false;
}
@Override
public boolean onItemLongPress(int index, Marker item) {
return false;
}
});
mv.addItemizedOverlay(itemizedIconOverlayGT);
}
我们可以在 onItemSingleTapUp 上执行任何事件进行单击,长按一下我们可以使用 onItemLongPress 方法。
我在我的应用程序中使用过,效果很好
答案 1 :(得分:3)
您可以在MapboxMap上设置MarkerClickListener
map.setOnMarkerClickListener(this);
然后让你的class / activity / fragment实现MapboxMap.OnMarkerClickListener
@Override
public boolean onMarkerClick(@NonNull Marker marker) {
return true;
}
答案 2 :(得分:0)
@Override
public void onMapClick(@NonNull LatLng point) {
if (destinationMarker != null) {
mapboxMap.removeMarker(destinationMarker);
}
destinationCoord = point;
destinationMarker = mapboxMap.addMarker(new MarkerOptions().position(destinationCoord));
Geocoder coder = new Geocoder(RouteFinderNewC.this);
List<Address> address;
try {
address = coder.getFromLocationName("Lahore pakistan", 1);
if (address == null) {
}
assert address != null;
Address location = address.get(0);
double lat = location.getLatitude();
double lng = location.getLongitude();
destinationPosition = Point.fromLngLat(lat, lng);
System.out.println("latitude and longitiude oof lahore ///////////" + lat + " " + lng);
originPosition = Point.fromLngLat(originCoord.getLongitude(), originCoord.getLatitude());
getRoute(originPosition, destinationPosition);
} catch (Exception e) {
}
Toast.makeText(this, "Kindly wait for finding suitable route for your.....", Toast.LENGTH_LONG).show();
button.setEnabled(true);
button.setBackgroundResource(R.color.mapboxBlue);
}
答案 3 :(得分:0)
科特琳
setContentView(R.layout.activity_main)
mapView1 = findViewById(R.id.mapView)
mapView1?.onCreate(savedInstanceState)
mapView?.getMapAsync { mapboxMap ->
mapboxMap.setOnMarkerClickListener(object: MapboxMap.OnMarkerClickListener {
override
fun onMarkerClick(@NonNull marker:Marker):Boolean {
Toast.makeText(getApplicationContext(), marker.getTitle(), Toast.LENGTH_LONG).show()
return true
}
})}