您好我正在尝试创建一个jquery / javascript函数,当标题状态删除我var markersArray
中的所有标记并在我的php脚本中执行请求以显示新标记时。我很难做到这一点,因为我对JS不好,所以这是我的代码。
我在页面上有3个过滤器选择元素 这是我的JS脚本
$('#lgu,#category,#type').change(function(){
google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
}
var lgu = $('#lgu').val();
var category = $('#category').val();
var type = $('#type').val();
$.get('xmlquery.php', { input: lgu, input2: category, input3: type},function(data){
downloadUrl("xmlspitter.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + name + "</b> <br/>" + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
markersArray.push(marker);
bindInfoWindow(marker, map, infoWindow, html);
}
});
});
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
});
感谢任何帮助。
注意我的我是JS的新手,这意味着我也是调试它的noob请帮忙。
答案 0 :(得分:1)
您的更改回调会创建一个函数(使用函数扩展google.maps.Map-prototype)clearOverlays()
,但您不能在某个地方调用此函数,例如:
map.clearOverlays()
......所以没有任何反应。
但是我根本没有看到在这里创建函数的任何理由,只需运行循环:
$('#lgu,#category,#type').change(function(){
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
/* continue with your code*/
});