谷歌地图 - 如何精确地理编码地址的视口

时间:2012-01-11 22:35:16

标签: maps google-geocoding-api

我正在将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

任何人都知道如何巧妙地将这个国家更好地集中在视口中?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不建议每次加载页面时进行地理编码,而是建议您获取所需的正确LatLng并存储。

如果您仍想坚持使用此方法,可以使用getCenter()上的LatLngBounds方法获取其中心。

这样,您可以致电

map.fitBounds(results[0].geometry.viewport.getCenter())
map.setZoom(5)