Я только начал использовать API Карт Google (v3.0) и до сих пор добился большого успеха. Я загружаю набор объектов со значениями широты и долготы из базы данных, передаю их в свой сценарий и зацикливаю их в сценарии, чтобы добавить их на карту.
Я использую метод "bounds.extend()
/ map.fitBounds()
" для установки масштаба и границ карты (см. Код ниже), который работает, как и ожидалось, в первый раз; однако, если я удаляю существующие маркеры, выбираю другой набор объектов и делаю то же самое на том же экземпляре карты , это неправильно устанавливает границы, обычно приводя к минимальному увеличению (вид астронавта) ,
Я подозреваю, что у моего объекта карты есть некоторая память о предыдущем наборе границ, которые я ему дал, и что мне нужно найти способ очистить эти границы перед назначением новых, но я действительно не могу слишком уверен.
Любая помощь очень ценится!
var locationList = [];
for (var i = 0; i < mapPoints.length; i++) { // mapPoints is a collection of DTOs
var mapPoint = mapPoints[i];
var location = new google.maps.LatLng(mapPoint.Latitude, mapPoint.Longitude);
locationList.push(location);
var marker = new google.maps.Marker({
map: map,
icon: '/Content/images/map/' + mapPoint.Status.Icon,
shadow: '/Content/images/map/shadow.png',
position: location
});
markers.push(marker); // markers is an Array that is managed outside this loop
}
var bounds = new google.maps.LatLngBounds();
for (var j = 0; j < locationList.length; j++)
bounds.extend(locationList[j]);
map.fitBounds(bounds);