2011-03-09 31 views

回答

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)); 

edit:瑞恩給了一個很好的建議:把填充使一些點的不躺在(謝謝瑞安!)

double fitFactor = 1.5; 
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor)); 
+1

優秀!使一個正方形和縮放到中心 –

+1

謝謝..工作.. – Shaiful

+10

我用這兩個地點,我的位置和興趣點,我注意到有時疊加非常接近屏幕的邊緣。爲了解決這個問題,我在'mapController.zoomToSpan((int)Math.abs(maxLat - minLat)* fitFactor),(int)(Math.abs(maxLon - minLon)* fitFactor))中加入了一個'double fitFactor = 1.5'。 '這增加了一個很好的填充。 –

2

有沒有實現這一目標的不可思議的方法。我建議遍歷所有overlayitems以獲取所有這些項目的中心和跨度。然後設置中心和跨度爲相應的地圖

相關問題