【问题标题】:How to save information of markers of Map v2 so that it can be retrieve on marker click如何保存 Map v2 的标记信息,以便在单击标记时检索它
【发布时间】:2015-10-16 07:45:24
【问题描述】:

我正在制作一个具有地图 v2 的应用程序,并且我正在成功显示多个图钉。我遵循了一个教程,该教程只是在地图 v2 上显示图钉/标记。

通过服务,我获得了在地图上显示酒店位置的标记信息。该服务正在向我发送包括酒店名称、位置、食物、服务、评级以及纬度和经度在内的信息。所以让我解释一下我到目前为止所做的事情

我正在做的是在我的异步任务中获取每个酒店规范,在此我调用以下方法来添加标记

addMarker(Double.parseDouble(latitude), Double.parseDouble(longitude));

addMarker 函数如下:

public void addMarker(Double Lat, Double Long) {

 if (null != googleMap) {
           MyMapFragment.this.googleMap.addMarker(new MarkerOptions()
                            .position(new LatLng(Lat, Long))
                            .title("You")
                            .draggable(true)


            );
}
}

这很好,因为它成功显示了标记,但我知道这不是正确的做法,因为我希望每个标记都显示其自己的其他特定信息,所以为此我知道我必须保存标记,但我不知道该怎么做

**我想要什么**

我想要的是保存每个引脚/标记记录,然后单击该标记在新窗口或活动中打开其信息,所以我该如何实现这一点,请分享我的代码以获取想法或请重定向我知道一个简单的代码,我知道关于 github 上的演示项目但我无法理解它,因为它对我来说很复杂。请帮忙

【问题讨论】:

标签: android google-maps google-maps-markers supportmapfragment


【解决方案1】:

很遗憾,您无法将元数据添加到标记中。相反,您需要做的是在将标记添加到地图形式的某些数据结构中时保存标记 (<Marker, Model>),以便您可以根据标记检索模型。

假设您有一个定义酒店信息的Model 类。在这种情况下,您可以使用对象地图来跟踪您的标记:

Map<Marker, Model> markerMap = new HashMap<Marker, Model>();

现在,当您添加标记时,只需将它们放在此地图中:

public void addMarker(Model hotelModel) {

    if (null != googleMap) {
        Marker hotelMarker = MyMapFragment.this.googleMap.addMarker(new MarkerOptions()
                        .position(new LatLng(hotelModel.getLat(), hotelModel.getLon()))
                        .title(hotelModel.getTitle())
        );

        markerMap.add(hotelMarker, hotelModel);
    }
}

现在当点击标记时,您可以根据标记对象获取酒店模型:

@Override
public boolean onMarkerClick (Marker marker) {
    Model hotelModel = markerMap.get(marker);
    if(hotelModel != null) {
        Log.d("test", "Hotel "+hotelModel.getTitle()+" is clicked"); 
    }
}

【讨论】:

  • 我让你指出一点,这确实是我想要的,所以你说我要做一个类让假设 HotelModel 并且它应该具有我从中获得的所有字段的 getter setter服务对吗?
  • 以及如何添加它们我们应该在调用 addmarkerFunction 时传递什么?
  • @CoasMckey 是的,只需创建一个包含您从服务中检索到的所有数据并为其指定 getter 和 setter 的类
  • @stacyqueen 你调用 addMarker 的方式和以前一样。只需将此方法的结果存储到地图中
  • @CoasMckey 不,它不会被覆盖。 'markerMap' 将存储尽可能多的模型对象。并根据点击的标记返回正确的模型
猜你喜欢
  • 2013-05-16
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 2013-05-23
  • 2013-11-02
相关资源
最近更新 更多