setbounds на картах гугл api v3

Я пытаюсь установить границы карты fitbounds не работает, потому что она оставляет некоторое пространство вокруг границ, поэтому делаю

{{{map.fitBounds(map.getBounds())}}}

несколько раз быстро уменьшит масштаб карты

Мне нужно уметь делать

{{{map.setBounds(map.getBounds())}}}

и ничего не случилось

пожалуйста, обратите внимание, что я использую v3 API, и поэтому не имею доступа к getBoundsZoomLevel

3 ответа

Если я не ошибаюсь, я предполагаю, что вы хотите, чтобы все ваши точки были видны на карте с максимально возможным уровнем масштабирования. Я достиг этого, установив уровень масштабирования карты до 16(не уверен, что это самый высокий уровень масштабирования на V3).

var map = new google.maps.Map(document.getElementById('map_canvas'), { zoom: 16
                                        , center: marker_point
                                        , mapTypeId: google.maps.MapTypeId.ROADMAP
});

Затем, после этого, я сделал вещи с ограничениями:

var bounds = new google.maps.LatLngBounds();

//you can have a loop here of all you marker points
//begin loop
bounds.extend(marker_point);
//end loop

map.fitBounds(bounds);

Результат: успех!

FitBounds как вы говорите, расширяет границы, чтобы превысить границы второй карты, чтобы границы были точно такими же, вы можете установить центр и масштаб.

map2.setCenter(map.getCenter());
map2.setZoom(map.getZoom());

Как в этом JSFiddle - http://jsfiddle.net/KmNaX/

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

function codeAddress() {
    var address = document.getElementById('address').value;
    if(address == null || address== "") {
        alert('Address field is Empty.. !');
    } else {
        geocoder.geocode({
            'address' : address
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                // If geocoder status is OK then locate the geometry,..
                var location = results[0].geometry.location
                // Obtaining the lat lang of new position on map.. 
                var latlng = new google.maps.LatLng(location.lat(),location.lng());

                map.setCenter(location);

                // view port gives us the map bounds for a particular location.. 
                **var viewportloc = String(results[0].geometry.viewport);
                var res = viewportloc.replace('((','').replace('))','').replace('(','').replace(')','').split(',');

                //alert(res[0]+" - "+res[1]+" - "+res[2]+" - "+res[3]);
                var sw = new google.maps.LatLng(res[0],res[1]);
                var ne = new google.maps.LatLng(res[2],res[3]);

                var bounds = new google.maps.LatLngBounds();
                bounds.extend(sw);
                bounds.extend(ne);

                map.fitBounds(bounds);**

                addMarker(location);
                setonMap(map);

            } else {
                document.getElementById('address').value = "";
                alert('Geocode was not successful for the following reason: ' + status);
            }
        });
    }
}
Другие вопросы по тегам