Som*_*ere 52 gps android android-mapview
硬编码onCreate()中的setZoom()感觉非常陈旧,我想通过最初使MapView设置缩放直到所有GeoPoints/OverlayItems在地图上可见来增强用户体验.
怎么能自动神奇地完成?
Ren*_*eno 128
有点像这样
int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLon = Integer.MAX_VALUE;
int maxLon = Integer.MIN_VALUE;
for (GeoPoint item : items)
{
int lat = item.getLatitudeE6();
int lon = item.getLongitudeE6();
maxLat = Math.max(lat, maxLat);
minLat = Math.min(lat, minLat);
maxLon = Math.max(lon, maxLon);
minLon = Math.min(lon, minLon);
}
mapController.zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon));
mapController.animateTo(new GeoPoint( (maxLat + minLat)/2,
(maxLon + minLon)/2 ));
Run Code Online (Sandbox Code Playgroud)
edit: Ryan提出了一个很好的建议:放一个填充物使得一些点不会落在边缘上(谢谢Ryan!)
double fitFactor = 1.5;
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor));
Run Code Online (Sandbox Code Playgroud)