2011-04-08 69 views

回答

3

可以使用setzoom() - 函數來進行。下面的代碼可以在this example找到。

mc = mapView.getController(); 
String coordinates[] = {"1.352566007", "103.78921587"}; 
double lat = Double.parseDouble(coordinates[0]); 
double lng = Double.parseDouble(coordinates[1]); 

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6)); 

mc.animateTo(p); 
mc.setZoom(17); 
+0

在Google地圖上是否有任何文檔,涉及縮放級別和距離。 – Mani 2011-04-11 05:34:39

+0

我看到你的另一個評論,你說你想根據某些地區動態設置它。你能更具體一點嗎?如果我理解正確,則可以獲取地圖的座標並使用開關塊設置縮放級別。無論如何,你必須映射縮放級別和區域。 – pecka85 2011-04-11 08:47:07

+1

您如何說4英里的距離對應於17倍的縮放比例? – Mani 2011-04-11 13:03:35

-1

播放與地圖的.setZoom(int);參數。我認爲它大約15:

所以myMap.setZoom(15);

+0

我想動態設置基於特定區域設置縮放級別。 這可能嗎? 我不想硬編碼「15」 – Mani 2011-04-11 05:36:00

+0

使用region/zoomlevel創建數據庫並從中讀取:-)您可以使用SQlite數據庫來存儲數據。 – 2011-04-11 10:20:18

+0

MapView沒有setZoom方法。 MapController的確如此。 – MSquare 2013-04-23 09:40:36

14

解決:

從Androd谷歌API: 縮放級別設置地圖的縮放級別。該值將被限制在1到21之間,儘管不是所有區域都在較高的縮放級別上具有拼貼。這只是直接設置縮放級別; 參數: zoomLevel - 在zoomLevel 1處,地球的赤道長度爲256像素。每個連續的縮放級別被放大2倍。 返回: 新縮放級別,介於1和21之間。

所以 給出的赤道E =40075公里或21.638,8英里 給放大d = 20公里或英里的距離

縮放水平:L = LOG2(E/d)+1

這是我用過 記得設置E = 21.638,8如果你想使用英里簡單的方法...

public static byte zoomLevel (double distance){ 
    byte zoom=1; 
    double E = 40075; 
    Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1)); 
    zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1); 
    // to avoid exeptions 
    if (zoom>21) zoom=21; 
    if (zoom<1) zoom =1; 

    return zoom; 
} 
+1

這個答案沒有考慮到地圖視圖的大小。在更大的屏幕上,您可以在相同的縮放級別上看到更多的地形。例如,對於512像素的寬度,您需要縮放級別2來顯示整個地球,1024(在平板電腦上) - 縮放級別3等。 – JBM 2012-04-03 15:22:25

相關問題