我需要在地图“已确定”时运行反向geoCode请求。我能找到的最接近的东西是TransformListener:
mMap.addTransformListener(new Map.OnTransformListener() {
@Override
public void onMapTransformStart() {
}
@Override
public void onMapTransformEnd(MapState mapState) {
}
});
问题是onMapTransformEnd在拖动地图时多次触发。还尝试向mapview添加一个手势监听器,但这似乎也没有在适当的时间回调,因为onPanEnd()在用户再次触摸之前不会被调用。
mMapView.getMapGesture().addOnGestureListener(new MapGesture.OnGestureListener() {
@Override
public void onPanStart() {
}
@Override
public void onPanEnd() {
}
地图完成移动并结算后是否有回调?
答案 0 :(得分:2)
非常快速的答案,但如果它是专门拖动你担心,为什么不将自己的滞后添加到OnTransformListener
。即onMapTransformEnd
回调和执行代码之间的等待时间很短。它将在另一个onMapTransformStart
回调时被取消。
Map
已确定的一般回调实际上是onMapTransformEnd
。
答案 1 :(得分:0)
由于api没有提供稳定的倾听者,因此延迟使用延迟:
mMap.addTransformListener(new Map.OnTransformListener() {
@Override
public void onMapTransformStart() {}
@Override
public void onMapTransformEnd(MapState mapState) {
// This works but is not optimal. I'd rather not wait a whole second before sending
// the geocoder request, but a half second is too fast to send only one request.
if(!mRunning) {
mRunning = true;
mSettledHandler.postDelayed(new Runnable() {
@Override
public void run() {
updatePickupViewOnMapSettled();
mRunning = false;
}
}, 1000);
}
}
});