如何保存 Map v2 的标记信息,以便在单击标记时可以检索
How to save information of markers of Map v2 so that it can be retrieve on marker click
我正在制作一个具有地图 v2 的应用程序,并且我正在成功显示多个图钉。我遵循了一个教程,该教程只是在地图 v2 上显示 pin/markers。
通过服务,我获得了在地图上显示酒店位置的标记信息。该服务正在向我发送信息,其中包括酒店名称、位置、食物、服务、评级和纬度,longitude.so 让我解释一下我到目前为止所做的事情
我正在做的是在我的异步任务中获取每个酒店规格,在此我调用以下方法来添加标记
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)
);
}
}
这很好,因为它成功地显示了标记,但我知道这不是正确的做法,因为我希望每个标记都显示它自己的其他特定信息,所以为了做到这一点,我知道我必须保存标记的信息,但我不知道该怎么做
**我想要什么**
我想要的是针对它保存每个 pin/marker 记录,然后单击该标记在新的 window 或 activity 中打开其信息,所以我该如何实现,请与我分享一个代码以了解这个想法,或者请将我重定向到一个简单的代码,我确实知道 github 上的演示项目,但我无法理解它,因为它对我来说很复杂。请帮助
很遗憾,您无法将元数据添加到您的标记中。您需要做的是在将标记添加到地图形式的某些数据结构时保存标记 (<Marker, Model>
),这样您就可以根据标记检索模型。
假设您有一个 Model
class 来定义酒店信息。在这种情况下,您可以使用对象地图来跟踪您的标记:
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);
}
}
现在点击marker可以根据marker对象获取酒店模型:
@Override
public boolean onMarkerClick (Marker marker) {
Model hotelModel = markerMap.get(marker);
if(hotelModel != null) {
Log.d("test", "Hotel "+hotelModel.getTitle()+" is clicked");
}
}
我正在制作一个具有地图 v2 的应用程序,并且我正在成功显示多个图钉。我遵循了一个教程,该教程只是在地图 v2 上显示 pin/markers。
通过服务,我获得了在地图上显示酒店位置的标记信息。该服务正在向我发送信息,其中包括酒店名称、位置、食物、服务、评级和纬度,longitude.so 让我解释一下我到目前为止所做的事情
我正在做的是在我的异步任务中获取每个酒店规格,在此我调用以下方法来添加标记
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)
);
}
}
这很好,因为它成功地显示了标记,但我知道这不是正确的做法,因为我希望每个标记都显示它自己的其他特定信息,所以为了做到这一点,我知道我必须保存标记的信息,但我不知道该怎么做
**我想要什么**
我想要的是针对它保存每个 pin/marker 记录,然后单击该标记在新的 window 或 activity 中打开其信息,所以我该如何实现,请与我分享一个代码以了解这个想法,或者请将我重定向到一个简单的代码,我确实知道 github 上的演示项目,但我无法理解它,因为它对我来说很复杂。请帮助
很遗憾,您无法将元数据添加到您的标记中。您需要做的是在将标记添加到地图形式的某些数据结构时保存标记 (<Marker, Model>
),这样您就可以根据标记检索模型。
假设您有一个 Model
class 来定义酒店信息。在这种情况下,您可以使用对象地图来跟踪您的标记:
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);
}
}
现在点击marker可以根据marker对象获取酒店模型:
@Override
public boolean onMarkerClick (Marker marker) {
Model hotelModel = markerMap.get(marker);
if(hotelModel != null) {
Log.d("test", "Hotel "+hotelModel.getTitle()+" is clicked");
}
}