我有一个存储十万个谷歌地图标记详细信息的服务器遍布全球,现在我试图在我的Android应用程序中显示它们。 很明显,我不需要一次显示整个标记,而只需要用户正在查看和缩放的位置。即时通讯使用服务器的json文件发送标记,但我还没有意识到,最有效的方法是加载它们作为用户需要。 谢谢!
答案 0 :(得分:0)
您可以获取谷歌地图中心位置的LatLng。然后,您可以将位置发送到您的服务器并计算距离特定距离更近的点,并仅返回那些点。
使用类似的东西:
mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLng latLng = cameraPosition.target;
mRepository.requestPointsNearPosition(latLng)
}
});
因此,每次相机改变位置时,都会重新加载点数。这样,您始终只显示地图中的相关点。
也许你可以使用一个句柄来确保用户停止移动地图0.5秒处理程序只触发地图停止移动的动作...其他它会在地图再次移动时取消自己
答案 1 :(得分:0)
定义当前用户的比例和围绕中心的圆形区域,这是用户可以看到的较大时间。下载该地区的标记。每次用户移动地图时,您都会检查新视角是否属于该区域,绘制新圆圈并下载未包含在前一个圆圈中的区域的图标