使用由lat和lon坐标指定的边框/视口指定Google地图静态图像

时间:2013-01-23 07:29:41

标签: google-maps google-static-maps

我正在尝试使用一对纬度和经度坐标指定的地图边框请求Google Static Maps API中的图像。我已经尝试以两个坐标的中心为中心,但似乎没有任何参数可以使用Static API执行此操作。有谁知道怎么做?

注意:这适用于桌面应用程序,我使用Javascript API

1 个答案:

答案 0 :(得分:1)

问题在于你不能将请求基于地图的角落,因为1. 缩放级别是离散值和2. 像素所代表的纬度数量随纬度而变化。因此,要显示2度,你需要在赤道附近给定一个给定的地图高度,在极点附近需要不同的高度(更大)。您是否愿意显示不同高度的地图,以便始终适合2度?

如果是这样,您可以使用my other post中的MercatorProjection对象,并使用以下函数计算必要的地图大小:

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

使用center = new google.maps.LatLng(49.141404,-121.960988)并缩放= 7,您需要一张(W x H)182 x 278像素的地图才能显示2 x 2度。