我正在尝试创建一个包含Google地图的页面。地图中填充了xml文件中的标记。 我只是无法弄清楚如何删除与最新用户输入不匹配的“旧”标记。 目前,我的js在第一个xml项目之后停止。
clearList.push(marker);应该将生成的标记放在以后使用。 当用户点击搜索按钮时,我希望所有标记都消失并使用clearMarkers();.
也许有人可以提供帮助 塞巴斯蒂安
这是我的JavaScript:
$(document).ready(function() {
$("#map").css({height: 650});
var clearList = [];
var myLatLng = new google.maps.LatLng(52.518143, 13.372879);
MYMAP.init('#map', myLatLng, 11);
$("#showmarkers").click(function(e){
clearMarkers();
MYMAP.placeMarkers('markers.xml');
});
});
function clearMarkers() {
$(clearList).each(function () {
this.setmap(null);
});
clearList = [];
}
var MYMAP = {
map: null,
bounds: null
}
MYMAP.init = function(selector, latLng, zoom) {
var myOptions = {
zoom:zoom,
center: latLng,
mapTypeId: google.maps.MapTypeId.HYBRID
}
this.map = new google.maps.Map($(selector)[0], myOptions);
this.bounds = new google.maps.LatLngBounds();
}
MYMAP.placeMarkers = function(filename) {
$.get(filename, function(xml){
$(xml).find("marker").each(function(){
// read values from xml for searching
var platzart = $(this).find('platzart').text();
var ort = $(this).find('ort').text();
var open = $(this).find('open').text();
if (platzart =="Kunstrasen" && $('#kunstrasen').attr('checked')
|| platzart =="Rasen" && $('#rasen').attr('checked')
|| platzart =="Tartan" && $('#tartan').attr('checked')
|| platzart =="Boltzplatz" && $('#boltzplatz').attr('checked')
){
// read values from xml for additional info
var name = $(this).find('name').text();
var plz = $(this).find('plz').text();
var note = $(this).find('note').text();
var adress = $(this).find('adress').text();
// create a new LatLng point for the marker
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
// extend the bounds to include the new point
MYMAP.bounds.extend(point);
// create new marker
var marker = new google.maps.Marker({
position: point,
map: MYMAP.map
});
clearList.push(marker);
// add onclick overlay
var infoWindow = new google.maps.InfoWindow();
var html='<strong>'+name+'</strong.><br />'+platzart;
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(MYMAP.map, marker);
});
}
MYMAP.map.fitBounds(MYMAP.bounds);
});
});
}
提前致谢
答案 0 :(得分:0)
看起来你有一个错字:
function clearMarkers() {
$(clearList).each(function () {
this.setmap(null);
});
clearList = [];
}
应该是:
function clearMarkers() {
$(clearList).each(function () {
this.setMap(null);
});
clearList = [];
}
this.setmap
应为this.setMap
。