如何让Google Maps API为一个国家设置正确的缩放级别?

有没有根据地图所居住国家的大小自动设置缩放级别?

maps.google.com正是我所需要的,所以,例如,如果我搜索俄罗斯,我会得到缩放级别,以便俄罗斯适合屏幕显示,而当我搜索古巴时,我可以获得更高的缩放级别,以便古巴只是适合。

有没有给Maps API一个国家位置并获得合适的缩放级别的方法。

如果不是,我想我必须手动(呃!)为这些信息创建我自己的表。 或者这个信息可以在任何地方免费获得?


对于API v3,请检查下面的答案。

您可以使用Google Maps客户端地理编码器获取国家的边界​​框,如下例所示:

// API version 2
var geocoder = new GClientGeocoder();

geocoder.getLocations("Russia", function (locations) { 

    var north = locations.Placemark[0].ExtendedData.LatLonBox.north;
    var south = locations.Placemark[0].ExtendedData.LatLonBox.south;
    var east  = locations.Placemark[0].ExtendedData.LatLonBox.east;
    var west  = locations.Placemark[0].ExtendedData.LatLonBox.west;

    var bounds = new GLatLngBounds(new GLatLng(south, west), 
                                   new GLatLng(north, east));

    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
});

// API version 3
// ... set north, south, east and west ...
var bounds = new google.maps.LatLngBounds(new google.maps.LatLng(south, west), 
                                          new google.maps.LatLng(north, east));
map.fitBounds(bounds);

以下屏幕截图显示了搜索俄罗斯和古巴时上述技术的结果:

放大俄罗斯和古巴


对于V3这个代码为我工作:

var geocoder = new google.maps.Geocoder();
   geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        map.fitBounds(results[0].geometry.viewport);
      }
    });

如果你不使用谷歌地图API,只使用他们的地理编码,你可以使用这个公式:

var url = 'http://maps.google.com/maps/geo?q=YOUR_QUERY&output=json&oe=utf8&sensor=false&key=YOUR_KEYback=geoCodeDone';
jQuery.getScript(url);


function geoCodeDone(data)
{
    if (data.Status.code == 200)
    {
        lng = data.Placemark[0].Point.coordinates[0];
        lat = data.Placemark[0].Point.coordinates[1];

        var east  = data.Placemark[0].ExtendedData.LatLonBox.east;
        var west  = data.Placemark[0].ExtendedData.LatLonBox.west;

        var zoom = 11 - Math.round(Math.log(Math.abs(west-east))/Math.log(2));
    }
}
链接地址: http://www.djcxy.com/p/81587.html

上一篇: How to get Google Maps API to set the correct zoom level for a country?

下一篇: Show/ Hide markers depending on zoom level