当地图最终停止移动时,我想获得屏幕中心。我注意到没有标准的 SDK 事件。我见过一些技术,例如覆盖 MapView.onTouchEvent,或者在 ACTION_UP 上启动一个重复计时器并等待地图移动结束。
我正在查看覆盖 MapView.draw :-
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Log.e(TAG, "draw");
center = this.getMapCenter(); //(GeoPoint)
if (centerSave != null){
if (centerSave.equals(center)){
Log.e(TAG, "map stopped moving");
// Now what goes here?????
}
}
centerSave = center;
}
这种“fling end”检测比我见过的其他检测要简单一些,但它确实可能会增加 CPU 的负载,因为它在每次绘制时都会运行。
我现在想向我的 MapActivity 发送某种消息/事件,说明地图已停止移动。然后 MapActivity 将在地图中心放置一个图钉。
如何发送此消息?
它不是线程之间的消息传递,而是两个不同类之间的消息传递。可能有一个简单的技术,但诀窍是知道它。
谢谢你的帮助
彼得
编辑:我正在使用处理程序向 UI 线程发送消息。不幸的是,它并没有解决投掷问题,(但它是一种改进)。
// Now what goes here????
Message m = Message.obtain();
m.what = MyApplication.HANDLE_DRAW_TO;
MyApplication.tabbedMapActivityHandler.dispatchMessage(m);