1°---在創建地圖,你必須設置OnCameraChangeListener和獲得的邊界活動的這樣的屏幕:
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
LatLngBounds bounds = mapa.getProjection().getVisibleRegion().latLngBounds;
}
2°---此步驟可能會有所不同,取決於如何獲取標記數據。基本上,你要做的是計算每個標記的經度和緯度是否在屏幕邊界內。我將向您展示如何通過從存儲經緯度的SQLite數據庫中提取數據,將其存儲在標記表內的兩個不同的DOUBLE clomuns中。
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng northeast = bounds.northeast;
String boundLat = String.valueOf(northeast.latitude);
String boundLong = String.valueOf(northeast.longitude);
LatLng southwest = bounds.southwest;
String boundLat2 = String.valueOf(southwest.latitude);
String boundLong2 = String.valueOf(southwest.longitude);
//Remove all markers from map
mMap.clear(); // or if your a using cluster manager:
//mClusterManager.clearItems();
String[] fields = new String[] { "name", "latitude", "longitude" };
String[] args = new String[] {boundLat, boundLong, boundLat2, boundLong2,};
Cursor markers = dataBase.query("markers", fields, "latitude<=? AND longitude<=? AND latitude>=? AND longitude>=?");
if (markers.moveToFirst()) {
do {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(marker.getDouble(1), marker.getDouble(2)))
.title(marker.getString(0)));
// or if you are using cluster manager create and add the items as you normaly do.
} while (c.moveToNext());
//if using cluster manager add :
//mClusterManager.cluster();
}
}
});
我們的想法很簡單,只需要記住,你的標記lat和隆基必須比屏幕的東北位置比西南角小,大,或者僅使用LatLngBounds.contains功能。
編輯:
爲了避免標記這是不是已經在屏幕中心時,點擊信息窗口關閉得到,你可以更改標記點擊收聽默認操作,刪除相機的舉動。
map.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
arg0.showInfoWindow();
return true; //must be true, if not, it will execute the default code after yours
}
});
工程就像一個魅力。但是,如何顯示標記的標題?當我按下標記時,setOnCameraChangeListener()被調用並再次關閉標題。你如何解決這個問題?謝謝! – jcasadellaoller 2015-11-20 11:21:48
我編輯了答案。 – MauriF 2015-11-25 14:40:28
謝謝mauriF。我解決了它,但以不同的方式。我在markerClickListener上設置了一個布爾值爲true,如果在onCameraChange中爲true,則爲false。最後,如果布爾值爲假,則只更新相機位置。結果相同。感謝你的寶貴時間! – jcasadellaoller 2015-11-26 18:22:02