我希望了解如何使用Google地图外部库复制Android(和iPhone)地图中存在的关注当前位置功能。该功能在地图中的工作方式是,当您按下按钮时,它会开始使用您的位置进行平移,直到您触摸(和/或移动)地图。使用以下我已经能够让我的应用程序保持当前位置在屏幕上,但不保持当前位置在屏幕的中心(当位置靠近屏幕的边缘时它平移,而地图保持在屏幕的边缘整个时间中心):
butMapCurrentLocation.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
runOnUiThread(new Runnable() {
public void run() {
mapController.animateTo(myLocationOverlay.getMyLocation());
}
});
}
});
我也尝试了setCenter
而不是animateTo
,他们似乎也有同样的效果。
此外值得注意的是,我需要能够停止将位置保持在中心的此功能(例如,当按下另一个按钮或触摸地图时)。上面的Runnable不会立即停止,即使使用.cancel,我也无法在请求时正确停止,如下所述:Android: How do I stop Runnable?
答案 0 :(得分:1)
Google Maps v2中还没有正式的方法。
然而,你可以做你想做的事。你需要做两件事:
所以做1.很容易,做2.正确使用Maps v2 api。有关详细信息,请查看此issue。
解决方法建议创建自己的MapView(扩展原始MapView)并覆盖它的dispatchTouchEvent方法。在那里,您可以捕捉任何触摸事件,并可以检测用户是否触摸/移动了地图。