Slo*_*loy 20 android google-maps google-maps-markers
我正在尝试将我的应用程序移植到新的Google Maps API v2,但是在与标记进行交互时遇到了麻烦.
我的背景:我有一张显示公共汽车和公共汽车站的地图.有了旧图书馆,我有自己的ItemizedOverlay用于公共汽车站,另一个用于公共汽车站.每个人都有一个不同的OnTapListener(实际上我使用外部库来显示气球),所以当用户点击总线标记时没有任何反应,但是当他点击公共汽车站标记时,会打开一个包含其信息的活动.此外,在我的ItemizedOverlay中,我使用模型的总线停止对象映射每个标记.
现在使用新的API我有两个主要问题:
我认为这两个问题可以使用Marker的不同子句来解决,但它没有构造函数,并且在将其添加到地图时会得到它的引用,所以我不知道是否可以使用自定义实现.
API是新的,因此网上没有太多关于类似问题的信息.我一直想弄清楚如何解决这个问题,但我一无所获.有谁知道这可能的解决方案?
谢谢.
编辑:我当前应用程序的地图的屏幕截图,有两种类型的标记:

roc*_*cko 23
我也遇到过这个问题.我的解决方案是:
private Map<Marker, MyModel> markerMap = new HashMap<>();
private GoogleMap mMap;
private void doMarkers(){
MarkerOptions opt = new MarkerOptions();
//Fill out opt from MyModel
Marker marker = mMap.addMarker(opt);
markerMap.put(marker, myModel);
}
Run Code Online (Sandbox Code Playgroud)
然后在OnMarkerClickListener回调中,使用单击的标记将模型从HashMap中拉出.还有一个方法Marker.getId()由于某种原因返回一个字符串.我不明白为什么在制作标记时不能指定int id,或者为什么在将标记对象添加到地图之前无法访问它.
更新:经过近4年的时间,谷歌已经添加了一种方法Marker.setTag(Object tag)来将任意数据与标记相关联.
mar*_*ant 18
好的,这是我决定使用的解决方案,AFAIK应该适用于任何情况:
private HashMap<String, MyModel> markers= new HashMap<String, MyModel>();
MyModel item = ...
MarkerOptions markerOptions = ...
markers.put(mMap.addMarker(markerOptions).getId(), item);
@Override
public void onInfoWindowClick(Marker marker) {
MyModel mapItem = (MyModel) markers.get(marker.getId());.
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14394 次 |
| 最近记录: |