在Google Static Maps API中获取矩形的图像

时间:2010-11-24 13:09:00

标签: google-maps

我有两个LatLong点:矩形的左上角和右下角,我想使用Google Maps API检索此矩形的卫星图像。

据我所知,由于缩放级别是一个整数,我可能无法获得这个精确的矩形但是如果我得到一个更大的像素图是没有问题,只要我能够计算latlong坐标中像素图的边界框

由于像素图尺寸是固定的(比方说640x640)并且我有它的中心,如何找到合适的缩放级别并计算像素图的边界框?

1 个答案:

答案 0 :(得分:2)

在旧的Google Maps API博客中找到了一个python引用,该博客提供了CalculateBoundsZoomLevel函数。

源文件为here

  def CalculateBoundsZoomLevel(self, bounds, view_size):
    """Given lat/lng bounds, returns map zoom level.

    This method is used to take in a bounding box (southwest and northeast 
    bounds of the map view we want) and a map size and it will return us a zoom 
    level for our map.  We use this because if we take the bottom left and 
    upper right on the map we want to show, and calculate what pixels they 
    would be on the map for a given zoom level, then we can see how many pixels 
    it will take to display the map at this zoom level.  If our map size is 
    within this many pixels, then we have the right zoom level.

    Args:
      bounds: A list of length 2, each holding a list of length 2. It holds
        the southwest and northeast lat/lng bounds of a map.  It should look 
        like this: [[southwestLat, southwestLat], [northeastLat, northeastLng]]
      view_size: A list containing the width/height in pixels of the map.

    Returns:
      An int zoom level.
    """
    zmax = 18
    zmin = 0
    bottom_left = bounds[0]
    top_right = bounds[1]
    backwards_range = range(zmin, zmax)
    backwards_range.reverse()
    for z in backwards_range:
      bottom_left_pixel = self.FromLatLngToPixel(bottom_left, z)
      top_right_pixel = self.FromLatLngToPixel(top_right, z)
      if bottom_left_pixel.x > top_right_pixel.x :
        bottom_left_pixel.x -= self.CalcWrapWidth(z)
      if abs(top_right_pixel.x - bottom_left_pixel.x) <= view_size[0] \
          and abs(top_right_pixel.y - bottom_left_pixel.y) <= view_size[1] :
        return z
    return 0