From 859341008a3c32d842beb5b7141b187b23c2261b Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sat, 20 Nov 2010 18:20:20 -0500 Subject: [PATCH] Some minor signpost UI improvements * Opening a sign infowindow will close the previously opened window. * The use of "Other" and "All" signpost categories are now more reasonable. --- web_assets/functions.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/web_assets/functions.js b/web_assets/functions.js index 31e9249..da098a6 100644 --- a/web_assets/functions.js +++ b/web_assets/functions.js @@ -1,3 +1,4 @@ +var prevInfoWindow = null; function prepareSignMarker(marker, item) { @@ -5,7 +6,10 @@ function prepareSignMarker(marker, item) { var infowindow = new google.maps.InfoWindow({content: c }); google.maps.event.addListener(marker, 'click', function() { + if (prevInfoWindow) + prevInfoWindow.close() infowindow.open(map,marker); + prevInfoWindow = infowindow }); } @@ -25,6 +29,7 @@ function drawMapControls() { map.controls[google.maps.ControlPosition.TOP_RIGHT].push(compassDiv); + if (markerData.length > 0) { // signpost display control // @@ -57,8 +62,10 @@ function drawMapControls() { map.controls[google.maps.ControlPosition.TOP_RIGHT].push(signControl); - + var hasSignGroup = false; for (label in signGroups) { + hasSignGroup = true; + var d = document.createElement("div"); var n = document.createElement("input"); n.type="checkbox"; @@ -68,10 +75,11 @@ function drawMapControls() { jQuery.each(markerCollection[t.data("label")], function(i,elem) {elem.setVisible(e.target.checked);}); }); - dropdownDiv.appendChild(n); + dropdownDiv.appendChild(d); + d.appendChild(n) var textNode = document.createElement("text"); textNode.innerHTML = label + "
"; - dropdownDiv.appendChild(textNode); + d.appendChild(textNode); } @@ -87,8 +95,15 @@ function drawMapControls() { dropdownDiv.appendChild(n); var textNode = document.createElement("text"); - textNode.innerHTML = "Others
"; + if (hasSignGroup) { + textNode.innerHTML = "Others
"; + } else{ + textNode.innerHTML = "All
"; + } dropdownDiv.appendChild(textNode); + + + } } function initRegions() {