我需要在地图"稳定"时运行反向地理编码请求。我能找到的最接近的东西是TransformListener:
mMap.addTransformListener(new Map.OnTransformListener() {
@Override
public void onMapTransformStart() {
}
@Override
public void onMapTransformEnd(MapState mapState) {
}
});
问题是在拖动地图时,onMapTransformEnd 会多次触发。还尝试向地图视图添加手势侦听器,但这似乎也没有在适当的时间回调,因为在用户再次触摸之前不会调用 onPanEnd((。
mMapView.getMapGesture().addOnGestureListener(new MapGesture.OnGestureListener() {
@Override
public void onPanStart() {
}
@Override
public void onPanEnd() {
}
地图完成移动并结算时是否有回调?
非常快速的回答,但如果它是你担心的特别拖沓,为什么不将你自己的滞后添加到OnTransformListener
。 即onMapTransformEnd
回调和执行代码之间的等待时间很短。它将在另一个onMapTransformStart
回调时被取消。
Map
结算时的一般回调实际上是onMapTransformEnd
。
最终使用了延迟,因为 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);
}
}
});