Карты Google - Как изобразить область просмотра геокодированного адреса - PullRequest
0 голосов
/ 12 января 2012

Я внедряю Google Maps в новый проект, и одна страница должна возвращать большую (100% * 100%) карту Канады. Я также использую геокодирование, чтобы определить широту передачи на карту.

Вот код:

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 Ответ

1 голос
/ 08 февраля 2012

Вместо геокодирования при каждой загрузке страницы, я бы предложил просто получить правильный LatLng и сохранить его.

Если вы все еще хотите придерживаться этого подхода, вы можетеиспользуйте метод getCenter() для LatLngBounds, чтобы получить его центр.

Таким образом, вы можете позвонить

map.fitBounds(results[0].geometry.viewport.getCenter())
map.setZoom(5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...