我们如何在新的 Google Maps Android API 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));
}
这将设置对象的位置,标题和片段。但是,如果我点击InfoWindow
答案 0 :(得分:37)
不确定这是否是正确的答案,但请看一下我对此问题所做的博文:
由于Marker
为final
,因此可以通过将数据与Marker
中的Map
相关联来轻松解决,例如HashMap<Marker, YourDataClass>
或{ {1}}
这是一个解释所有内容的教程: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html
答案 1 :(得分:16)
从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);
有关标记数据的更多信息,here are the docs。
答案 2 :(得分:1)
尝试android-maps-extensions其库,您可以通过setdata方法添加对象标记并检索数据调用方法getData
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'
}
答案 3 :(得分:0)
将对象添加到地图后,您可以将其绑定到标记中,例如:
MarkerOptions markerOptions = new MarkerOptions().position(YOUR_LANG_LAT).title(YOUR_TITLE);
Marker addedMarker = mMap.addMarker(markerOptions);
CustomObject obj = new CustomObject();
addedMarker.setTag(obj);
然后在地图上单击,例如,您可以将对象检索为:
mMap.setOnMarkerClickListener(marker -> {
CustomObject obj = (CustomObject) marker.getTag();
return false;
});