在屏幕上显示给我的区域的Android地图中显示标记



我正在使用谷歌地图。假设我的数据库中存储了大约 100 万个位置标记。我想做的是仅加载或显示那些应该位于当前显示在屏幕上的地图部分的标记。(例如,如果我的地图显示亚洲,它应该只显示亚洲的标记;如果我移动到地图上的任何其他位置,它应该显示该区域的标记。我这样做是为了我不必一次加载整个数据库,因为这可能会导致应用程序延迟。我尝试使用Spatialite,但我没有找到一个好的教程,或者关于如何使用它的信息。这是我关注的链接之一,但我没有得到一个好主意。有没有其他方法可以做到这一点,或者空间石是最好的选择?

您必须找出从数据库中检索这些位置的最佳方法,但是根据地图相机的位置添加标记的一种方法是在GoogleMap.OnCameraChangeListener中添加相关标记。

// Check to see if your GoogleMap variable exists.
if (mGoogleMap != null) {
// Respond to camera movements.
mGoogleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
// Get the current bounds of the map's visible region.
LatLngBounds bounds = mGoogleMap.getProjection().getVisibleRegion().latLngBounds;
// Loop through your list of positions.
for (LatLng latLng: yourLatLngList) {
// If a position is inside of the bounds,
if (bounds.contains(latLng)) {
// Add the marker.
mGoogleMap.addMarker(new MarkerOptions()
.position(latLng));
}
}
}
});
}

我不建议每次更改地图相机的位置时都循环浏览一百万个位置。我认为最好的方法是在移动相机时获取地图可见区域的当前边界,然后将调用中的边界发送到不同线程上的后端,并让您的后端完成查找适合这些边界的位置的工作,然后将该列表返回到您的应用程序,您可以在其中相应地添加标记。

最新更新