【发布时间】:2017-01-16 12:19:18
【问题描述】:
我有一个服务器,它存储了遍布全球的十万个谷歌地图标记详细信息,现在我试图在我的 android 应用程序中显示它们。 显然,我不需要一次显示整个标记,而只需要显示用户正在查看的位置并以一定的缩放比例显示。我使用来自服务器的 json 文件来发送标记,但我还没有意识到根据用户需要加载它们的最有效方法是什么。 谢谢!
【问题讨论】:
标签: java android json google-maps
我有一个服务器,它存储了遍布全球的十万个谷歌地图标记详细信息,现在我试图在我的 android 应用程序中显示它们。 显然,我不需要一次显示整个标记,而只需要显示用户正在查看的位置并以一定的缩放比例显示。我使用来自服务器的 json 文件来发送标记,但我还没有意识到根据用户需要加载它们的最有效方法是什么。 谢谢!
【问题讨论】:
标签: java android json google-maps
你可以得到谷歌地图中心位置的LatLng。然后您可以将位置发送到您的服务器并计算距离超过一定距离的点并仅返回那些点。
使用这样的东西:
mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLng latLng = cameraPosition.target;
mRepository.requestPointsNearPosition(latLng)
}
});
因此,每次您的相机改变位置时,您都会重新加载点。这样,您始终只显示地图中的相关点。
也许您可以使用句柄来确保用户在 0.5 秒内停止移动地图,该处理程序仅在地图停止移动时触发操作......如果再次移动地图,它会自行取消
【讨论】:
定义当前用户的比例和围绕中心的圆形区域,该区域比用户可以看到的大几倍。下载该区域的标记。每次用户移动地图时,您都会检查新视角是否属于该区域,绘制一个新圆圈并下载未包含在前一个圆圈中的区域的图标
【讨论】: