對onCreate()內的setZoom()進行硬編碼感覺非常陳舊,我想通過最初讓MapView設置縮放直到所有GeoPoints/OverlayItems在地圖上可見。Android MapView自動縮放直到所有ItemizedOverlay都可見
這怎麼可能是自動神奇地完成?
對onCreate()內的setZoom()進行硬編碼感覺非常陳舊,我想通過最初讓MapView設置縮放直到所有GeoPoints/OverlayItems在地圖上可見。Android MapView自動縮放直到所有ItemizedOverlay都可見
這怎麼可能是自動神奇地完成?
有點像這個
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));
edit:
瑞恩給了一個很好的建議:把填充使一些點的不躺在(謝謝瑞安!)
double fitFactor = 1.5;
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor));
有沒有實現這一目標的不可思議的方法。我建議遍歷所有overlayitems以獲取所有這些項目的中心和跨度。然後設置中心和跨度爲相應的地圖
優秀!使一個正方形和縮放到中心 –
謝謝..工作.. – Shaiful
我用這兩個地點,我的位置和興趣點,我注意到有時疊加非常接近屏幕的邊緣。爲了解決這個問題,我在'mapController.zoomToSpan((int)Math.abs(maxLat - minLat)* fitFactor),(int)(Math.abs(maxLon - minLon)* fitFactor))中加入了一個'double fitFactor = 1.5'。 '這增加了一個很好的填充。 –