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

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

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

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

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

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

addMarker 函数如下:

public void addMarker(双纬度,双长){

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


            );
}
}

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

**我想要什么**

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

最佳答案

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

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

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

现在,当您添加标记时,只需将它们放入此 map 中即可:

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

关于android - 如何保存Map v2的标记信息,以便可以在单击标记时检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630807/

相关文章:

java - 从 JSON 创建动态对象

javascript - 是否可以捕获 JavaScript 异步回调中抛出的异常?

google-maps - 将纬度/经度转换为像素并返回

android - 谷歌地图应用程序的新更新不显示我在 Android 中创建的标记

javascript - PHP 脚本仅从 MySQL 数据库中获取地址字段的第一行

jquery - 谷歌地图标记随机消失

android - 即使在 Android 3.2 上构建后,第三方库也会在 LayerType 属性上出现问题

Android 4.2.2 不兼容

android - 在 Android 中使用相机拍照时出现致命信号 11 和奇怪的错误消息

javascript - 使用AJAX导入JS文件不起作用