我在地圖中動態添加了一個非固定數量的標記,每個標記都與我的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