场景
- 读取用户的初始位置并添加标记,设置相机位置为该位置。
- 每次用户拖动/缩放相机时,需要调用Web服务并传递地图的矩形坐标。此Web服务将返回地图范围内要显示为标记的位置列表。
因此,基本上我正在做以下操作:
onCreate
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
// Make a web call for the locations
myTask = new MyTask();
myTask.execute();
}
在每个从Web服务返回的项目上,我都会执行任务 onPostExecute:
mMap.addMarker(
new MarkerOptions().position(
new LatLng(myPoint.getLatitude(), myPoint.getLongitude())
)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pushpin))
);
期望的行为: 每次用户滚动或缩放时,相机位置都会改变,并且异步任务会再次被调用以获取一组新的活动坐标。
实际的行为: onPostExecute
和OnCameraChangeListener
之间发生无限循环。
据我所知,但也可能我是错的,addMarker
触发了相机位置变化事件?如何才能实现上述期望的行为?
onCameraChange
触发。用户不必长时间互动,或者可以疯狂地滑动以查看南极洲上有哪些标记。在X分钟/小时/天内获取数据更新可能更好。当然,轮询永远无法击败推送。 - MaciejGórski