我动态地添加在地图中,每个人都与我的POCO类的一个实例标记的非固定的量。
我需要的时候上的标记的一个用户点击,我显示自定义信息窗口中的数据的其余部分给他们,让链接。
你有什么建议?
PS:我补充新的标志物,每次用户平移或缩放地图,我担心超载的应用程序。 设置在非可见标记?
我动态地添加在地图中,每个人都与我的POCO类的一个实例标记的非固定的量。
我需要的时候上的标记的一个用户点击,我显示自定义信息窗口中的数据的其余部分给他们,让链接。
你有什么建议?
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());
}
});
}
}