我正在将Google地图实施到一个新项目中,一个页面应该返回一张加拿大的大型(100%* 100%)地图。我还使用地理编码来确定要传递给地图的latlng。
以下是代码:
var myLatlng = new google.maps.LatLng(37.775, -122.4183333);
var myOptions ={
zoom: 5,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.TERRAIN
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var address = "Canada";
var geocoder = new google.maps.Geocoder(address);
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//map.setCenter(results[0].geometry.location);
//The above was too far north
map.fitBounds(results[0].geometry.viewport);
map.setZoom(5);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
除了“离左边有点太远”之外,它的效果很好。从本质上讲,它已经切断了大多数海事省份。这里可以看到一个例子:
http://50.28.69.176/~sequoia/locations.php
任何人都知道如何巧妙地将这个国家更好地集中在视口中?
感谢您的帮助。
答案 0 :(得分:1)
我不建议每次加载页面时进行地理编码,而是建议您获取所需的正确LatLng
并存储。
如果您仍想坚持使用此方法,可以使用getCenter()
上的LatLngBounds
方法获取其中心。
这样,您可以致电
map.fitBounds(results[0].geometry.viewport.getCenter())
map.setZoom(5)