Javascript Google Maps在地图重置功能上清除HTML

时间:2011-08-01 21:42:29

标签: javascript maps

我需要清除从Google地图功能创建的DIV。 有两个HTML DIV。我遇到麻烦的DIV是MarkerCount

 <div id="sidebar"></div>
 <div id="MarkerCount"></div>

 function createMarkerCount(count) {
 var div = document.createElement('div');
 var html = "Results: " + count + " Facilities";
 div.innerHTML = html;
 div.style.marginBottom = '5px'; 
 return div;
 }

将标记返回到Google地图时会创建此项。这基本上是对当前在地图上显示的记录数量进行计数。这个功能很好。

这是我的功能,重置地图并清除标记和另一个名为侧边栏的innerhtml DIV:

function clearLocations() {
infoWindow.close();
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers.length = 0; 
sidebar.innerHTML = "";
 map.setCenter(new google.maps.LatLng(36.1611, -116.4775), 6);
}

这个功能很好用。现在,当我想要清除MarkerCount时, 我尝试将以下行添加到函数clearLocations()

MarkerCount.innerHTML = "";

但是,当页面首次加载并执行搜索时,会在搜索开始之前调用clearLocations()函数,因为当前没有为CreateMarker函数创建innerhtml。这会抛出一个错误,指出CreateMarker为NULL,因为那里什么都没有。

所以瘦了,sidebar.innerhtml被清除得很好,但是当我添加代码行来清除CreateMarker.innerhtml DIV时,我收到一个错误。不知道为什么会发生这种情况......

编辑 - 显示CountMarker如何获取计数的函数

var markercountEntry = createMarkerCount(markerNodes.length);
MarkerCount.appendChild(markercountEntry); 

1 个答案:

答案 0 :(得分:1)

听起来您在innerHTML函数中对尚未定义的元素设置clearLocations()时遇到问题。我建议您只处理尚未定义CreateMarkerMarkerCount的情况。

类似的东西:

function clearLocations() {
   if(CreateMarker && CreateMarker.innerHTML)
      CreateMarker.innerHTML = "";
   infoWindow.close();
   for (var i = 0; i < markers.length; i++) {
     markers[i].setMap(null);
   }
   markers.length = 0; 
   sidebar.innerHTML = "";
   map.setCenter(new google.maps.LatLng(36.1611, -116.4775), 6);
}