25

我们如何在新的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

4

4 回答 4

38

不确定这是否是正确的答案,但请查看我针对此问题所做的这篇博文:

因为Markeris final,所以这可以通过将数据与Markera链接来轻松解决Map,例如HashMap<Marker, YourDataClass>HashMap<Marker, String>

这是一个解释所有内容的教程:http: //bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

于 2012-12-16T15:17:29.770 回答
24

从 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);

有关标记数据的更多信息,请参阅文档

于 2016-10-28T09:49:59.640 回答
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'
}
于 2015-12-01T12:25:02.213 回答
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;
});
于 2020-06-12T22:55:29.400 回答