0

Мне нужно автоматически менять значки Google Maps на основе внутреннего содержимого автоматически обновляемого элемента DOM.Значок маркера Google Maps Автоматическое изменение

Я просмотрел документацию для addListener и addDomListener, но это все мыши и клики и прочее. Мне нужно, чтобы он обнаружил изменение чистого содержимого HTML в рассматриваемом элементе, и если это значение соответствует определенным условиям, измените значок маркера на его основе.

Вот код, я использую:

infowindow=new google.maps.InfoWindow(); 
for (i=0;i<buildings.length;i++){ 
    marker=new google.maps.Marker({ 
     position:new google.maps.LatLng(buildings[i][4],buildings[i][5]), 
     map:map, 
     shadow:shadow, 
     icon:greenIcon, 
     title:buildings[i][0]+" \n"+buildings[i][1], 
     zIndex:buildings[i][6] 
    }); 
} 

Я думаю о добавлении setInterval в сочетании с JQuery, чтобы заставить значение buildings[i][7] массива (не входит в выше) равным содержание DIV в вопросе , а затем запустить несколько условных операторов, чтобы определить, соответствует ли он правильным критериям для изменения значка маркера.

Но после этого я потерял информацию о том, как заставить маркер фактически измениться на основе динамически обновляемого значения.

ответ

2

Чтобы установить значок, связанный с Marker, попробуйте функцию Marker.setIcon. Она принимает один параметр, который может быть либо:

  1. string, который содержит относительное расположение файла значок изображения (как в вашем коде), ИЛИ -
  2. MarkerImage, которая дает вам больше контроля (анкер , происхождение, размер и т. д.) о том, как отображается изображение значка
+0

Спасибо. Это часть того, что я искал (я также нашел его по адресу http://stackoverflow.com/questions/1941260/google-maps-api-v3-how-do-i-dynamically-change-the-marker-icon) ... но есть ли способ обнаружить изменение элемента DOM (который вызовет изменение), или мне просто придется положить его на 'setInterval'? Я бы предпочел не делать этого, если мне это не нужно. – InterfaceGuy

+0

Ну, так как нет никакого способа получить уведомление об изменениях элемента, вам придется либо: опросить элемент (используя 'setInterval', если хотите), либо использовать механизмы привязки данных, которые мы обсуждали по вашему другому вопросу: http://stackoverflow.com/q/10355852/1314132. –

+0

Спасибо Шон. Ваша помощь была незаменимой. :) – InterfaceGuy

0

из апи документации Google

var beachMarker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map, 
     icon: image 
    }); 
    map.addOverlay (beachMarker); 
+0

Будет ли это заложить совершенно новый маркер поверх старого? Я не хочу этого; Я хочу отключить тот, который у меня уже есть. – InterfaceGuy