我需要根据checkox的状态添加/删除标记 这是我的添加/删除功能(无法正常工作):
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);
}
}
这里是获取标记的检查和数据的代码:
$.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)
}
}
});
我需要根据复选框状态从地图添加/删除标记 所以也许有人会指出我有逻辑错误的地方
答案 0 :(得分:0)
js函数中的循环+拼写错误存在逻辑错误。 这里是完全workig函数,它可以监听复选框的操作:
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);
}