Проверьте, если опция уже существует - PullRequest
0 голосов
/ 31 августа 2011

Я строю параметры для плагина gMap динамически, и мне нужно знать, как проверить, существует ли один из маркеров.

Вот как это строится в JavaScript:

success: function(data) {
  var markers = { controls: true, scrollwheel: true, markers: [], zoom: 8 };
  $.each(data["events"], function(id, event) {
    // .. do other stuff with the data
    if(showmap) {
      // add location to maps list prevent multiples
      //
      // How do I check to see if it already exists?
      //
      // event[] is a JSON Object, BTW
      //
      //if((markers.indexOf(event['LocLatitude']) == -1) && (markers.indexOf(event['LocLongitude']) == -1)) {
      marker1 = { latitude: event['LocLatitude'],
                  longitude:event['LocLongitude'],
                  html: '"'+event['LocName']+'<br />'+event['LocAddress']+'<br />'+event['LocCity']+', '+event['LocState']+'"',
                  icon:{image: "/images/gmap_pin_orange.png",
                        iconsize: [26, 46],
                        iconanchor: [12,46],
                        infowindowanchor: [12, 0]
                       }
                };
      markers.markers.push(marker1);
      //} // if((markers.indexOf(event['LocLatitude']) == -1)
    } // if(showmap)
  } // $.each(data["events"]
}, // success:

Код с комментариями выше показывает, как я делал это, когда строил его как строку, эта техника больше не работает. Мне нужно знать, как проверить, существует ли уже добавляемый маркер в markers.markers до его нажатия.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

Здесь я перебираю маркеры и проверяю те, которые мне нужны, возвращаемое значение false вырывает меня из $ .each, возвращаемое значение true продолжается.

marker_exists = false;
$.each( markers.markers, function(i, n){
  if(markers.markers[i].latitude == event['LocLatitude'] && markers.markers[i].longitude == event['LocLongitude']) {
    if(markers.latitude == "") {
      markers.latitude = event['LocLatitude'];
      markers.longitude = event['LocLongitude'];
    }
    marker_exists = true;
    return false;
  } else {
    return true;
  }
});
0 голосов
/ 31 августа 2011

Вместо того, чтобы помещать маркеры в таблицу, не могли бы вы назначить их с помощью числовых идентификаторов или как-то создать идентификаторы на основе контекста? Смотрите мой ответ на этот вопрос: Как выбрать и управлять маркером Google Maps (V3 JS API) по идентификатору?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...