2013-01-23 25 views
0

我試圖從一對經度和緯度座標指定的地圖的邊界從Google Static Maps API請求圖像。我試着圍繞兩個座標的中心,但似乎沒有任何參數可以用Static API來做到這一點。有誰知道如何做到這一點?指定經緯度和座標指定的帶有邊框/視口的谷歌地圖靜態圖像

注意:這是用於桌面應用程序,而我是而不是使用JavaScript API。

+0

請參閱我對此問題的回答:http://stackoverflow.com/questions/12507274/how-to-get-bounds-of-a-google-static-map/12511820#12511820 – Marcelo

+0

如果您沒有使用JavaScript API,那麼你不應該用Google-maps-api-3來標記問題。 (標記已移除) – Marcelo

+0

@Marcelo:對標籤感到抱歉。我看了你的另一個答案,雖然它很好,但它與我所需要的有點相反。是否有可能確定要指定什麼縮放級別以獲得經度和緯度的顯示?例如,如果我想要的視口是2度寬,2度高,我應該請求什麼縮放級別,然後我可以實現您的答案? – Matt

回答

1

的事情是,你不能立足於地圖的角上的請求,因爲1. 縮放等級是離散值和2 緯度的一個像素表示與緯度變化量。因此,要顯示2度,您需要靠近赤道的給定地圖高度以及靠近極點的不同高度(更大)。你是否願意展示不同高度的地圖以適應2度?

如果是這樣,則可以使用麥卡托投影法對象從my other post,並用下面的函數來計算必要的地圖的大小:

<script src="MercatorProjection.js"></script> 

function getMapSize(center,zoom){ 
    var proj = new MercatorProjection(); 
    var scale = Math.pow(2,zoom); 
    var centerPx = proj.fromLatLngToPoint(center); 
    var SW = new google.maps.LatLng(center.lat()-1,center.lng()-1); 
    var southzWestPx = proj.fromLatLngToPoint(SW); 
    var NE = new google.maps.LatLng(center.lat()+1,center.lng()+1); 
    var northEastPx = proj.fromLatLngToPoint(NE); 

// Then you can calculate the necessary width and height of the map: 
    var mapWidth = Math.round((northEastPx.x - southzWestPx.x) * scale); 
    var mapHeight = Math.round((southzWestPx.y - northEastPx.y) * scale); 
} 

隨着中心=新google.maps.LatLng(49.141404,-121.960988)和縮放= 7,你會得到你需要(W×H)182×278像素的地圖,以顯示2×2度。

+0

@Matt,計算中有一個小錯誤。對不起,我糾正了它。 – Marcelo

相關問題