2012-12-14 51 views
23

如何将对象添加到新的谷歌地图Android API v2中的标记? 所以,如果我们点击InfoWindow,我们可以用对象做些什么?Android Google Maps v2 - 将对象添加到标记

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

+0

您可以使用[android-maps-extensions](https://code.google.com/p/android-maps-extensions)扩展Marker和Polygon类,并允许您设置并从中获取对象 – primax79

回答

37

不确定这是否是正确的答案,但看看这篇关于这个问题的博文:

由于Markerfinal,它的这个可以很容易地通过在MapMarker数据连接来解决,例如HashMap<Marker, YourDataClass>HashMap<Marker, String>

这里有一个教程,说明一切: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

+0

我也没有看到任何其他的方式。 – Vincent

+0

感谢您发布解决方案。 –

+1

请不要添加链接专用答案,请在此提供解决方案摘要SO – avalancha

1

尝试android-maps-extensions它的图书馆,在那里你可以通过SetData方法添加对象标记和检索数据调用方法的getData

Read more

Object getData() and setData(Object) on Marker, Circle, GroundOverlay, Polygon, Polyline or TileOverlay 

从摇篮您可以使用谷歌的任何版本的播放服务

dependencies { 
    compile 'com.androidmapsextensions:android-maps-extensions:2.2.0' 
    compile 'com.google.android.gms:play-services-maps:8.1.0' 
} 
12

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

更多infomration上标记数据,here are the docs

+0

我知道这是一个老问题,但我希望他们会添加像他们在iOS中的userData选项。 –

相关问题