我使用Google地图,MappingOverlayActivity和ItemizedOverlay显示用户的当前位置及其预定目的地。
首先设置适当缩放级别的最佳方法是什么,以便两个位置都显示在屏幕上的地图上,地图覆盖最大区域,即不是当前位置在中心,具有中心处于2点的中间位置。当用户当前位置发生变化时,如何重新计算并重置适当的缩放级别以合并新的当前位置。
答案 0 :(得分:3)
您使用MapController
中的方法(使用mapView.getController()
获得)。
具体为animateTo
(或moveTo
)和zoomToSpan
。
假设您有两个GeoPoints
GeoPoint current;
GeoPoint destination;
做这样的事情
mapController.zoomToSpan(Math.abs(current.getLatitudeE6() - destination.getLatitudeE6()), Math.abs(current.getLongitudeE6() - destination.getLongitudeE6());
mapController.animateTo(new GeoPoint((current.getLatitudeE6() + destination.getLatitudeE6())/2, (current.getLongitudeE6() + destination.getLongitudeE6())/2));
所以你计算点的跨度(差异)和中心(平均值)。
答案 1 :(得分:0)
对于坐标的中心,您可能需要进行一些数学计算 http://en.wikipedia.org/wiki/Centroid