我從包含其位置的對象數組向我的地圖添加標記。點擊一個標記時,我希望它顯示一個infowindow(它也從包含標記位置的對象數組中獲取其數據)。Google Maps Android在地圖上保留標記清除
我已經創建了一個HashMap:
HashMap<String,Marker> hashMarkers = new HashMap<>();
這是我用添加標記的代碼。只有中心的某個範圍內的標記才被添加。
for (pointNumber= 0; pointNumber<pointArray.length; pointNumber++) {
if (distanceToPointFromCenter<range) {
hashMarkers.put(String.valueOf(pointNumber),
mMap.addMarker(new MarkerOptions()
.position(new LatLng(pointArray[pointNumber].latitude, pointArray[pointNumber].longitude))
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.title("Title: " + pointArray[pointNumber].pointTitle)
.snippet("Snippet: " + pointArray[pointNumber].snippet)));
} else {
System.out.println("Out of range");
}
}
因爲我將有很多的標記,我的相機使用mMap.clear();
和重繪標誌感動每一次清除地圖。
這是我OnMarkerClickListener:
@Override
public boolean onMarkerClick(Marker selectedMarker) {
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (marker.equals(hashMarkers.get("the number of the marker"))) {
Marker marker = mMap.addMarker(new MarkerOptions()
.position(selectedMarker.getPosition())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.title(selectedMarker.getTitle())
.snippet(selectedMarker.getSnippet()));
mMap.setInfoWindowAdapter(new CustomWindowAdapter(getLayoutInflater()));
marker.showInfoWindow();
return true;
} else {
return false;
}
}
});
}
當我點擊一個標誌,我看到信息窗口在幾毫秒內,它消失之前。發生這種情況是因爲點擊標記時刷新了相機。
我試圖重新創建標記及其內部OnMarkerClick信息窗口(如上所示),但它不工作。
有沒有什麼辦法。我在
只防止我被清除點擊標記,或
重繪我點擊標記並顯示其信息窗口
對不起,如果這是一個不好的問題,但我很新的編程(和StackOverflow)。 任何幫助將不勝感激。
你應該用'marker.remove()刪除特定的標記;' –
謝謝,但我想刪除所有的標記_except_那個特定的標記。 – AJDFHLOef