如何让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?