2014-09-21 4 views
0

загружаю данные для моего Google Maps v3 с GeoJSON:Получить все Google Map v3 маркеры загружаются из GeoJSON

that.map = new google.maps.Map($('#map')[0], mapOptions); 
that.map.data.loadGeoJson('http://localhost/geoserver/...'); 

Теперь, в какой-то момент на каком-то событии пользователя, мне нужно, чтобы получить один маркер и покрасить его синим цветом. Я могу установить другой цвет с setIcon.

Моя идея состоит в том, чтобы получить все функции, затем перебрать их, найти нужную функцию (основанную на уникальном поле данных функций) и найти маркер за этой функцией и изменить значок. Я нашел несколько подходов, которые хранят все маркеры в массиве, но не знаю, зачем мне нужен другой массив. Компьютерные ресурсы важны, и я не хочу дублировать вещи.

Мне нужна помощь, как получить функции и как получить объект Marker, связанный с выбранной функцией. Если есть лучший способ сделать это, пожалуйста ...

UPDATE

Я нашел это:

var feature = this.map.data.getFeatureById(ID); 

Мне просто нужно, чтобы получить функцию маркера. Как? Doesn't look that Feature class has method for that?

ответ

3

Нет способа/свойства, которое дает вам доступ к форме (маркеру, многоугольнику и т. Д.), Созданному API.

Чтобы установить новый значок-свойство для конкретного использования признака overrideStyle:

map.data.overrideStyle(feature, {icon: newIconSettings}); 
0

Другой вариант заключается:

that.map.data.setStyle(function(feature) 
     { 
      var color = 'red'; 
      if (feature.getProperty('color')) 
      { 
       color = feature.getProperty('color'); 
      } 
      return ({ // @type {google.maps.Data.StyleOptions} 
         icon: 'http://maps.google.com/mapfiles/ms/icons/' + color + '-dot.png', 
        }); 
    }); 

Но это не так хорошо, как решение доктор Молле, потому что он необходимо перебрать все установленные функции. Я нашел его на google api documentation (найдите название Change Appearance Dynamically).

Смежные вопросы