在 android 上的地图中显示我屏幕上显示给我的区域中的标记
Display markers in maps on android in the region that is displayed to me on my screen
我正在使用 Google 地图。假设我的数据库中存储了大约 100 万个位置标记。我想要做的是只加载或显示那些应该位于当前显示在屏幕上的地图部分的标记。 (例如,如果我的地图显示亚洲,它应该只显示亚洲的标记;如果我移动到地图上的任何其他地方,它应该显示那个区域的标记。)我这样做是为了不不必一次加载整个数据库,因为这会导致应用程序延迟。我尝试使用 Spatialite,但找不到好的教程或有关如何使用它的信息。这是我关注的链接之一,但我没有得到一个好主意。有没有其他方法可以做到这一点,或者 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));
}
}
}
});
}
我不建议每次更改地图的相机位置时循环遍历一百万个位置。我认为你最好的方法是在移动相机时获取地图可见区域的当前边界,然后在另一个线程上将边界调用发送到你的后端,并让你的后端完成以下工作找到适合这些边界的位置,然后 return 列出回您的应用程序,您可以在其中相应地添加标记。
我正在使用 Google 地图。假设我的数据库中存储了大约 100 万个位置标记。我想要做的是只加载或显示那些应该位于当前显示在屏幕上的地图部分的标记。 (例如,如果我的地图显示亚洲,它应该只显示亚洲的标记;如果我移动到地图上的任何其他地方,它应该显示那个区域的标记。)我这样做是为了不不必一次加载整个数据库,因为这会导致应用程序延迟。我尝试使用 Spatialite,但找不到好的教程或有关如何使用它的信息。这是我关注的链接之一,但我没有得到一个好主意。有没有其他方法可以做到这一点,或者 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));
}
}
}
});
}
我不建议每次更改地图的相机位置时循环遍历一百万个位置。我认为你最好的方法是在移动相机时获取地图可见区域的当前边界,然后在另一个线程上将边界调用发送到你的后端,并让你的后端完成以下工作找到适合这些边界的位置,然后 return 列出回您的应用程序,您可以在其中相应地添加标记。