【问题标题】:What is the most effective way to load google maps markers from server从服务器加载谷歌地图标记的最有效方法是什么
【发布时间】:2017-01-16 12:19:18
【问题描述】:

我有一个服务器,它存储了遍布全球的十万个谷歌地图标记详细信息,现在我试图在我的 android 应用程序中显示它们。 显然,我不需要一次显示整个标记,而只需要显示用户正在查看的位置并以一定的缩放比例显示。我使用来自服务器的 json 文件来发送标记,但我还没有意识到根据用户需要加载它们的最有效方法是什么。 谢谢!

【问题讨论】:

    标签: java android json google-maps


    【解决方案1】:

    你可以得到谷歌地图中心位置的LatLng。然后您可以将位置发送到您的服务器并计算距离超过一定距离的点并仅返回那些点。

    使用这样的东西:

     mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
                @Override
                public void onCameraChange(CameraPosition cameraPosition) {
                    LatLng latLng = cameraPosition.target;
    
                    mRepository.requestPointsNearPosition(latLng)
                }
            });
    

    因此,每次您的相机改变位置时,您都会重新加载点。这样,您始终只显示地图中的相关点。

    也许您可以使用句柄来确保用户在 0.5 秒内停止移动地图,该处理程序仅在地图停止移动时触发操作......如果再次移动地图,它会自行取消

    【讨论】:

    • 这就是我的想法,但调用该函数的正确点是什么?我认为每次用户移动地图中心时向服务器发出请求不会有效
    • 我认为这就是坏事。谢谢!
    【解决方案2】:

    定义当前用户的比例和围绕中心的圆形区域,该区域比用户可以看到的大几倍。下载该区域的标记。每次用户移动地图时,您都会检查新视角是否属于该区域,绘制一个新圆圈并下载未包含在前一个圆圈中的区域的图标

    【讨论】:

    • 谢谢,但是如果例如用户将地图滚动到地球的另一边,这是否意味着必须加载整个内容?
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2017-08-11
    • 2012-11-10
    • 2021-09-13
    • 1970-01-01
    • 2014-01-15
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多