我在地图中动态添加了一个非固定数量的标记,每个标记都与我的POCO类的一个实例相关。如何将Google Maps Android API v2标记链接到对象
我需要链接它们,所以当用户点击其中一个标记时,我会显示自定义InfoWindow中的其余数据。
你有什么建议? PS:我每次用户平移或缩放地图时都会添加新标记,我担心应用程序超载。不可见的标记是否被丢弃?
我在地图中动态添加了一个非固定数量的标记,每个标记都与我的POCO类的一个实例相关。如何将Google Maps Android API v2标记链接到对象
我需要链接它们,所以当用户点击其中一个标记时,我会显示自定义InfoWindow中的其余数据。
你有什么建议? PS:我每次用户平移或缩放地图时都会添加新标记,我担心应用程序超载。不可见的标记是否被丢弃?
我建议使用HashMap或类似的东西。当你遍历你的对象的列表,并为他们创造的标记,也标记添加到列表中,使用对象为重点的ID,并标记为值:
private HashMap<Integer, Marker> markerMap = new HashMap<Integer, Marker>();
...
for(MarkerObject obj : this.markerObjects)
{
//If the marker isn't already being displayed
if(!markerMap.containsKey(obj.getId()))
{
//Add the Marker to the Map and keep track of it
this.markerMap.put(obj.getId(), this.mMap.addMarker(getMarkerForObject(obj)));
}
}
然后你可以使用一个OnInfoWindowClickListener找到您的地图抽头标记的对象ID,做一些与相应的数据,如开放与细节的新活动。
我知道这个职位是旧的,但如果你是在设置地图使用预制地图活动在Android Studio中
private void setUpMap() {
Map<String,someObject>markerInfoList = new HashMap<String,someObject>();
// get the marker Id as String
String id = mMap.addMarker(new MarkerOptions().position(new LatLng(/*set Latitude*/, /*setLongitude*/).title("Marker")).getId();
//add the marker ID to Map this way you are not holding on to GoogleMap object
markerInfoList.put(id,mapppedHouses.get(i));
}
然后在:
private void setUpMapIfNeeded() {
///...
if (mMap != null) {
//if a marker is clicked
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
someObject = markerInfoList.get(marker.getId());
}
});
}
}
喜,这个问题与其他问题有关(http://stackoverflow.com/questions/14318258/how-google-maps-android-api-v2-handle-markers-outside-the-view-are/14323819#14323819)你也回答了。我很担心如何控制HashMap上的项目数量,我想删除不在可见区域的项目。你有什么建议? –
我建议做一些类似于我在这篇博客文章中写到的内容:http://discgolfsoftware.wordpress.com/2012/12/06/hiding-and-showing-on-screen-markers-with-google-maps- android-api-v2/ – DiscDev
这是否不会忽视[MapFragment文档]上的警告(https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment )关于坚持GoogleMap对象的页面? – WeNeigh