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);
}
});
}
}