Это, безусловно, тот же вопрос, что и Сброс границ в API Карт Google v3 , на который нет ответа.
Я хочу дать пользователю возможность изменить область, в которой онпоиск.Я размещаю маркеры мест внутри почтового индекса (и "касаясь" почтовых индексов).Если они хотят найти другой почтовый индекс, они могут ввести новый почтовый индекс, и мы повторим процесс.
Я следую предложенному Google способу удаления маркеров и тому подобного, но еще не выяснил, как очиститькарты границ и начать все заново с новым набором границ.Ниже приведена функция, которая вызывается при каждой новой записи почтового индекса.
MYMAP.placeMarkers = function(zipcode) {
if(markers.length > 0) {
for(var i=0;i<markers.length;i++) {
markers[i].setMap(null);
}
markers = new Array();
var bounds = new google.maps.LatLngBounds();
MYMAP.map.fitBounds(bounds);
}
$.post("/locations",{"zip": zipcode}, function (data) {
data = JSON.parse(data);
$.each(data, function (key, value) {
var name = value.name;
var address = value.address;
// create a new LatLng point for the marker
var lat = value.lat;
var lng = value.lon;
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
// extend the bounds to include the new point
MYMAP.bounds.extend(point);
// add the marker itself
var marker = new google.maps.Marker({
position: point,
map: MYMAP.map
});
// create the tooltip and its text
infoBubble = new InfoBubble({
shadowStyle: 1,
padding: 10,
backgroundColor: 'white',
borderRadius: 5,
arrowSize: 10,
borderWidth: 1,
maxWidth: 400,
borderColor: '#A85E45',
disableAutoPan: false,
hideCloseButton: true,
arrowPosition: 50,
backgroundClassName: 'phoney',
disableAutoPan: true,
hideCloseButton: false,
arrowStyle: 0
});
var html='<b>'+name+'</b><br />'+address;
// add a listener to open the tooltip when a user clicks on one of the markers
google.maps.event.addListener(marker, 'click', function() {
infoBubble.setContent(html);
infoBubble.open(MYMAP.map, marker);
});
markers.push(marker);
});
// Fit the map around the markers we added:
MYMAP.map.fitBounds(MYMAP.bounds);
google.maps.event.trigger(map, "resize");
});
}