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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在我的屏幕上显示给我的区域中的android上的地图中显示标记相关的知识,希望对你有一定的参考价值。

我正在使用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));
                    }
                }
        }
   });
}

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

以上是关于在我的屏幕上显示给我的区域中的android上的地图中显示标记的主要内容,如果未能解决你的问题,请参考以下文章

如何在地图上显示带有地址的开始 - 目的地屏幕

如何在 Android 主屏幕上的我的应用程序图标上显示通知计数

锁定屏幕上的 Android 活动

为啥 Google 地图在我的 Android 应用程序中显示空白屏幕?

基于android上的用户区域设置的日期格式

Android:单个屏幕上有很多活动?