2011-11-07 85 views
0

我有一個簡單的Google地圖填充整個頁面。 下面是一個示例:Google地圖以最小縮放範圍爲界

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps JavaScript API v3 Example: Marker Animations</title> 
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var stockholm = new google.maps.LatLng(59.32522, 18.07002); 
    var map; 

    function initialize() { 
    var mapOptions = { 
     zoom: 0, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: stockholm 
    }; 

    map = new google.maps.Map(document.getElementById("map_canvas"), 
      mapOptions); 

    google.maps.event.addListener(map, 'idle', function() { 
     var b = map.getBounds(); 
     document.getElementById("bounds").innerText = b.getSouthWest().lng() + ", " + b.getNorthEast().lng(); 
    }); 

    } 
</script> 
</head> 
<body onload="initialize()"> 
<div id="map_canvas" style="width: 100%; height: 100%;">map div</div> 
<div id="bounds" style="left: 100px; top: 0px; width: 300px; height: 30px; position: absolute; background-color: #a0a0a0;"></div> 
</body> 
</html> 

最低縮放級別,當你可以看到幾個世界地圖,我希望經度範圍爲-180 - 180,但在真正的我不明白這一點。我的期望錯了嗎?爲什麼?

在實際應用程序中,我有一個服務器端代碼,根據當前地圖邊界從數據庫中提取標記。

+0

不清楚你在這裏問什麼。提供您所看到的內容,期望看到的內容以及它們的不同之處的具體細節。 – Cheeso

+0

如果您運行我的示例(我剛將縮放級別更改爲0),您將看到以下經度值或類似:'-159.11748,-164.7424800000001'。我期望看到'-180,180',因爲此時此圖完全可見。 –

+0

返回的邊界顯然是在地圖div的遠西和遠東顯示的經度。所以如果你有一個「全世界」的顯示器,並且第180次子午線不是與div的左側精確對齊,那麼你將得到除-180和+180之外的其他值作爲界限。以前人們遇到過這個問題:http://code.google.com/p/gmaps-api-issues/issues/detail?id=2009你似乎想要的是地圖的「未包裝」邊界。我不確定如何在Google maps v3 API中執行此操作。 – Cheeso

回答

2

界限將報告窗口邊界的lat和lng - 即使地圖已經包裝了幾次。所以,窗口右下角的lat,lng會是一個點,左上角是另一個點。

我有這個相同的問題,我最終做的是創建一個世界範圍是90,180到-90,-180,然後看看是否適合在窗口中。

var ne = new google.maps.LatLng(90, 180); 
var sw = new google.maps.LatLng(-90, -180) 
var world = new google.maps.LatLngBounds(ne, sw); 
var fetchbounds; 
if(map.getBounds().contains(ne) && map.getBounds().contains(sw)){ 
    fetchBounds = world; 
}else{ 
    fetchBounds = map.getBounds(); 
} 
+0

不幸的是,這似乎不工作,因爲LatLngBounds.contains只接受LatLng對象 –

+0

嘗試...現在檢查角落 – whiteatom