Google MAP API v3: центр и масштабирование отображаемых маркеров
Я использую следующий код для установки маркеров на моей карте:
var latLngs = []
$.each(locations.markers, function(i, m){
var myLatLng = new google.maps.LatLng(m.latitude, m.longitude);
latLngs[i] = myLatLng
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
shadow: shadow,
icon: image,
shape: shape,
title: m.city,
zIndex: i
});
})
маркеры на карте. Теперь я хотел бы центрировать и масштабировать карту на этих маркерах. Как я могу это сделать? Я пробовал:
map.fitBounds(getBoundsForLatLngs(latLngs));
консоли.журнал latLngs выдает:
[(46.793182, 7.146903) { b=46.793182, more...}, (46.8077779, 7.1709386) { b=46.8077779, more...}]
но это, кажется, не работает, и я не получаю никаких ошибок в консоли. Что я делаю не так?
4 ответа:
Я также нашел это исправление, что масштабирование, чтобы соответствовать все метки
LatLngList: массив экземпляров latLng, например:
// "map" is an instance of GMap3 var LatLngList = [ new google.maps.LatLng (52.537,-2.061), new google.maps.LatLng (52.564,-2.017) ], latlngbounds = new google.maps.LatLngBounds(); LatLngList.forEach(function(latLng){ latlngbounds.extend(latLng); }); // or with ES6: // for( var latLng of LatLngList) // latlngbounds.extend(latLng); map.setCenter(latlngbounds.getCenter()); map.fitBounds(latlngbounds);
Если вы предпочитаете более функциональный стиль:
// map - instance of google Map v3 // markers - array of Markers var bounds = markers.reduce(function(bounds, marker) { return bounds.extend(marker.getPosition()); }, new google.maps.LatLngBounds()); map.setCenter(bounds.getCenter()); map.fitBounds(bounds);
попробуйте это function....it работает...
$(function() { var myOptions = { zoom: 10, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); var latlng_pos=[]; var j=0; $(".property_item").each(function(){ latlng_pos[j]=new google.maps.LatLng($(this).find(".latitude").val(),$(this).find(".longitude").val()); j++; var marker = new google.maps.Marker({ position: new google.maps.LatLng($(this).find(".latitude").val(),$(this).find(".longitude").val()), // position: new google.maps.LatLng(-35.397, 150.640), map: map }); } ); // map: an instance of google.maps.Map object // latlng: an array of google.maps.LatLng objects var latlngbounds = new google.maps.LatLngBounds( ); for ( var i = 0; i < latlng_pos.length; i++ ) { latlngbounds.extend( latlng_pos[ i ] ); } map.fitBounds( latlngbounds ); });
для центра и автоматического увеличения на маркерах дисплея
// map: an instance of google.maps.Map object // latlng_points_array: an array of google.maps.LatLng objects var latlngbounds = new google.maps.LatLngBounds( ); for ( var i = 0; i < latlng_points_array.length; i++ ) { latlngbounds.extend( latlng_points_array[i] ); } map.fitBounds( latlngbounds );