如何保存Map v2标记的信息,以便在标记点击时检索它

时间:2015-07-25 20:28:05

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

我正在创建一个具有地图v2的应用程序,并且我正在成功显示多个引脚。我已经按照教程显示了地图v2上的图钉/标记。

通过服务,我将获得Marker在地图上显示酒店位置的信息。该服务向我发送信息,包括酒店名称,位置,食物,服务,评级和纬度和经度。让我解释一下到目前为止我做了什么

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

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上的演示项目但是我无法理解它,因为它对我来说很复杂。请帮忙

1 个答案:

答案 0 :(得分:5)

很遗憾,您无法在标记中添加元数据。您需要做的是 - 在将标记添加到地图( ifelse(1 < 2, "true" , "false" ) [1] "true" )形式的某个数据结构时保存标记,以便您可以根据标记检索模型。

假设您有一个<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);
    }
}