2015-02-11 4 views
5

Я использую MapBox SDK для офлайн-карты. Я добавил несколько маркеров на карту, как получить событие click для маркеров. Есть ли способ получить событие щелчка маркера?Как получить событие щелчка маркера с помощью MapBox SDK?

+0

как у решена ваша проблема @BSavaliya – Erum

+0

я использовал ItemizedIconOverlay для маркера щелчок – BSavaliya

+0

im пытался использовать только один местоположение, которое является текущим местоположением пользователя на устройстве с маркером – Erum

ответ

5

Я получил решение для события маркерного щелчка в mapbox, используя функциональность, предоставляемую mapbox sdk под названием ItemizedIconOverlay.

Я сделал, как следующее:

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 метода.

я использовал в своем приложении, и он прекрасно работает

+0

, имеет кружок рисования с увеличением в анимации в текущем местоположении, и при щелчке его следует уменьшить из этого круга – Erum

+0

нет, я просто поместил изображение маркера на место – BSavaliya

+0

Я только хочу показать маркер изображение в текущем местоположении пользователя, поэтому использование функции UserLocationOverlay для alMarkerGT в ItemizedIconOverlay запрещено? как преодолеть – Erum

0

Вы можете установить MarkerClickListener на MapboxMap

map.setOnMarkerClickListener(this); 

, а затем ваш класс/деятельность/фрагмент реализации MapboxMap.OnMarkerClickListener

@Override 
public boolean onMarkerClick(@NonNull Marker marker) { 
    return true; 
} 
+0

В этом подходе вы не можете дважды щелкнуть один и тот же маркер один за другим, он получает первый клик, но не получает другие клики на том же маркере, если вы не нажмете «Карта», а затем снова кликнуть тот же маркер. –

+1

Да, MapBox знает об этом, и я предполагаю, что они работают над этим https://github.com/mapbox/mapbox-gl-native/issues/6099 https://github.com/mapbox/ MapBox-ГЛ-нативный/вопросы/3176 – vanshg