如何使用MapBox SDK获取标记的点击事件?

时间:2015-02-11 13:10:36

标签: android mapbox marker clicklistener

我正在使用MapBox SDK进行离线地图我在地图上添加了多个标记, 如何获得标记的点击事件。 有没有办法获得标记的点击事件?

4 个答案:

答案 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
            }
            })}