2013-06-09 2 views
0

мне нужно добавить/удалить маркер в зависимости от состояния checkox в здесь мое добавление/функцию (которая не работает должным образом) удаление:добавления/удаления маркера из Gmaps

function getPointOnMap(mapObj) { 
    var position = new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude); 

    if(markers.length!=0){ 
     for(var i=0; i<markers.length; i++){ 
      if(markers[i].getPosition().toString() == position.toString()){ 
       marker.setMap(null); 
       markers.slice(i); 
      } else { 
       var marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
        map: map }); 
       markers.push(marker); 
      } 
     } 
    } else { 

     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
      map: map }); 
     markers.push(marker); 
    } 
} 

здесь есть код получать checkoxes и данные для маркеров:

$.ajax({ 
      type : "POST", 
      url : "/getElements.json", 
      success : function(result) { 
      var html = ''; 
       for (var i = 0; i < result.length; i++) { 
        (function(n) { 
         var obj = result[i]; 
         if (obj.field == 0) { 
          element = $("<input>", { 
          type : "checkbox", 
          id : obj.id 
         }); 

         element.click(function() { 
          getPointOnMap(obj); 
         }); 
         $("#orders").append(element, 
          obj.address + "<br />"); 
         } 
        })(i) 
       } 
      } 
}); 

мне нужно добавить/удалить маркер с карты в зависимости от CheckBox состояния поэтому, возможно, кто-то хотел бы указать, где у меня есть логические ошибки

+0

Что говорит консоль? Что он делает или не делает? – alkis

+0

Во втором разделе. Почему вы выполняете функцию (n) в предложении for? – alkis

+0

@alkis второй раздел работает отлично. Я просто разместил его, чтобы показать его, и ничего больше –

ответ

0

была логическая ошибка в циклах + ошибки в js-функциях. здесь полнофункциональные функции, которые прислушиваются к действию:

function getPointOnMap(mapObj) { 
     var position = new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude); 
     console.log(markers); 
     var count = 0; 


     if(markers.length!=0){ 
      for(var i=0; i<markers.length; i++){ 

       if(markers[i].getPosition().toString() == position.toString()){ 
        count ++; 
        console.log("1"); 
        markers[i].setMap(null); 
        markers.splice(i); 
       } 
      } 
      if(count==0) { 
       var marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
        map: map }); 
       markers.push(marker); 
      } 
     } else { 
      console.log("3"); 
      var marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
       map: map }); 
      markers.push(marker); 
     } 
     console.log(markers); 
}