Android Google Maps v2 - 将对象添加到标记

时间:2012-12-14 18:12:45

标签: android google-maps-markers google-maps-android-api-2

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

,我希望能够转到有关此特定Spot-object的其他活动

4 个答案:

答案 0 :(得分:37)

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

由于Markerfinal,因此可以通过将数据与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

Read more

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