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
Ответы
Ответ 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 и получить метод вызова данных getDatap >
Подробнее
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'
}