Подтвердить что ты не робот

Android Google Maps v2 - Добавить объект в маркер

Как добавить объект в маркер в новый API Google Maps Android v2? Итак, если мы нажмем на InfoWindow, мы сможем что-то сделать с этим объектом?

public void addSpotOnMap(Spot spot) {
    getMap().addMarker(new MarkerOptions()
            .position(new LatLng(spot.getParseGeoPoint().getLatitude(), spot.getParseGeoPoint().getLongitude()))
            .title(spot.getName())
            .snippet(spot.getCategory())
            .draggable(false));

}

Здесь задается местоположение, заголовок и фрагмент объекта. Но я хочу иметь возможность перейти к другому действию в отношении этого конкретного объекта Spot, если я нажму на InfoWindow

4b9b3361

Ответ 1

Не уверен, что это правильный ответ, но посмотрите на этот блогпост, который я сделал по этой проблеме:

Так как Marker is final, это легко решить, связав данные с Marker в Map, например HashMap<Marker, YourDataClass> или HashMap<Marker, String>

Вот учебник, который объясняет все: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

Ответ 2

Как и в Play Services v9.4.0, вы можете теперь установить любой объект непосредственно на маркер!

Чтобы сохранить данные:

Marker marker = getMap().addMarker(new MarkerOptions()
        .position(lat, lng)
        .title(spot.getName());

CustomObject myData = new CustomObject();
marker.setTag(myData);

Затем, чтобы восстановить ваши данные:

CustomObject myRestoredData = (CustomObject)marker.getTag(myData);

Для получения дополнительной информации о данных маркера вот документы.

Ответ 3

Попробуйте android-maps-extensions свою библиотеку, где вы можете добавить объект для маркировки методом setdata и получить метод вызова данных getData​​p >

Подробнее

Object getData() and setData(Object) on Marker, Circle, GroundOverlay, Polygon, Polyline or TileOverlay

из Gradle Вы можете использовать любую версию Служб Google Play.

dependencies {
    compile 'com.androidmapsextensions:android-maps-extensions:2.2.0'
    compile 'com.google.android.gms:play-services-maps:8.1.0'
}