检查选项是否已存在

时间:2011-08-31 13:50:40

标签: javascript jquery google-maps

我正在动态构建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 :(得分:0)

您可以使用数字ID分配它们,还是以某种方式根据上下文创建ID,而不是将标记推送到表中?看看我对这个问题的回答: How to select and manipulate google maps (V3 JS API) marker by ID?

答案 1 :(得分:0)

在这里,我正在迭代标记并检查我想要的标记,返回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;
  }
});