安卓谷歌地图v2 - 在标记上添加对象

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,我希望能够跳转到关于这个特定景点对象的另一个活动。


你可以使用android-maps-extensions。它扩展了Marker和Polygon类,并允许您从中设置和获取对象。 - primax79
4个回答

38

我也没有看到其他的方法可以做到。 - Vincent Cantin
感谢您回复解决方案。 - Mehul Joisar
1
请不要添加仅包含链接的答案,提供在SO上解决方案的摘要。 - avalancha
将标记存储在哈希映射中作为键是不好的做法。存储标记引用也是不好的做法。 - Yahor10
@Yahor10,你能解释一下为什么这样不好吗? - dumazy
当加载许多标记时,它们将更改自己的ID,因此您无法在容器中找到自己的引用,您也不需要存储不可见的标记的动态数据等等... 容器中的标记将具有ID = 101,但是Google地图上的标记ID = 102,但它将是相同的标记! - Yahor10

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

关于标记数据的更多信息,请查阅文档


我知道这是一个老问题,但我希望他们能像iOS一样添加userData选项。 - Micah Montoya

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'
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接