0

我正在尝试从 Google Static Maps API 请求图像,其地图边界由一对纬度和经度坐标指定。我试过以两个坐标的中心为中心,但似乎没有任何参数可以使用静态 API 执行此操作。有谁知道如何做到这一点?

注意:这是一个桌面应用程序,我没有使用 Javascript API。

4

1 回答 1

1

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

如果是这样,您可以使用我另一篇文章中的 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) 和 zoom = 7 你会发现你需要一张 (W x H) 182 x 278 像素的地图才能显示 2 x 2 度。

于 2013-01-24T08:17:45.173 回答