| 6 | | <style>h1 { font-size: 14px; } body, input { font-size: 12px; font-family: verdana,arial,sans-serif; } #meta li { list-style-type: none; }</style> |
| | 6 | <style> |
| | 7 | h1 { font-size: 14px; } |
| | 8 | body, input { font-size: 12px; font-family: verdana,arial,sans-serif; } |
| | 9 | ul#menu { margin: 0 0 0 20px; padding: 0; } |
| | 10 | #menu li { list-style-type: none; cursor: pointer; margin: 0; padding: 2px; } |
| | 11 | #menu li img { vertical-align: middle; } |
| | 12 | div.popup { width: 18em; } |
| | 13 | .footer { clear: both; font-size: 10px; padding-top: 10px; } |
| | 14 | </style> |
| 107 | | function onLoad() { |
| 108 | | var baseIcon = new GIcon(); |
| 109 | | baseIcon.image = "http://www.google.com/mapfiles/marker.png"; |
| 110 | | baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; |
| 111 | | baseIcon.iconSize = new GSize(20, 34); |
| 112 | | baseIcon.shadowSize = new GSize(37, 34); |
| 113 | | baseIcon.iconAnchor = new GPoint(9, 34); |
| 114 | | baseIcon.infoWindowAnchor = new GPoint(9, 2); |
| 115 | | baseIcon.infoShadowAnchor = new GPoint(18, 25); |
| | 121 | var baseIcon = new GIcon(); |
| | 122 | baseIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; |
| | 123 | baseIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; |
| | 124 | baseIcon.iconSize = new GSize(12, 20); |
| | 125 | baseIcon.shadowSize = new GSize(22, 20); |
| | 126 | baseIcon.iconAnchor = new GPoint(6, 20); |
| | 127 | baseIcon.infoWindowAnchor = new GPoint(5, 1); |
| | 128 | |
| | 129 | var map = new GMap(document.getElementById("map")); |
| | 130 | map.addControl(new GLargeMapControl()); |
| | 131 | map.addControl(new GMapTypeControl()); |
| 117 | | var tinyIcon = new GIcon(); |
| 118 | | tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; |
| 119 | | tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; |
| 120 | | tinyIcon.iconSize = new GSize(12, 20); |
| 121 | | tinyIcon.shadowSize = new GSize(22, 20); |
| 122 | | tinyIcon.iconAnchor = new GPoint(6, 20); |
| 123 | | tinyIcon.infoWindowAnchor = new GPoint(5, 1); |
| 124 | | |
| 125 | | var map = new GMap(document.getElementById("map")); |
| 126 | | map.addControl(new GLargeMapControl()); |
| 127 | | map.addControl(new GMapTypeControl()); |
| 128 | | |
| 129 | | function createMarker(point, index, name, desc) { |
| 130 | | var letter = String.fromCharCode("A".charCodeAt(0) + index); |
| 131 | | // var icon = new GIcon(baseIcon); |
| 132 | | // icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png"; |
| 133 | | var icon = tinyIcon; |
| 134 | | var marker = new GMarker(point, icon); |
| 135 | | var msg = name ? '<b>' + name + '</b>' + (desc ? '<br>' + desc : '') : |
| 136 | | 'Marker <b>' + letter + '</b>'; |
| | 133 | var menu = document.getElementById("menu"); |
| | 134 | function createMarker(point, index, name, desc) { |
| | 135 | var letter = String.fromCharCode("A".charCodeAt(0) + index); |
| | 136 | var marker = new GMarker(point, baseIcon); |
| | 137 | var msg = name ? '<b>' + name + '</b>' + (desc ? '<p>' + desc + '</p>' : '') : 'Marker <b>' + letter + '</b>'; |
| | 138 | msg = '<div class="popup">' + msg + '</div>'; |
| 138 | | GEvent.addListener(marker, "click", function() { |
| 139 | | marker.openInfoWindowHtml(msg); |
| 140 | | }); |
| 141 | | return marker; |
| | 140 | var li = document.createElement("li"); |
| | 141 | li.innerHTML = '<img src="' + baseIcon.image + '"> ' + name; |
| | 142 | |
| | 143 | var f = function() { marker.openInfoWindowHtml(msg); li.style.background = '#DDE'; }; |
| | 144 | var g = function() { li.style.background = 'transparent'; } |
| | 145 | GEvent.addListener(marker, "click", f); |
| | 146 | GEvent.addListener(marker, "infowindowclose", g); |
| | 147 | li.onmousedown = f; |
| | 148 | li.onmouseover = function() { li.style.marginLeft = '2px'; } |
| | 149 | li.onmouseout = function() { li.style.marginLeft = '0px'; } |
| | 150 | |
| | 151 | menu.appendChild(li); |
| | 152 | return marker; |
| | 153 | } |
| | 154 | |
| | 155 | var request = GXmlHttp.create(); |
| | 156 | var url = window.location.search; |
| | 157 | var i = url.indexOf('?url='); |
| | 158 | url = (i != -1) ? url.substr(i+5) : 'http://as-is.net/maps/sample.kml'; |
| | 159 | url = 'http://as-is.net/maps/aproxy.cgi?url=' + encodeURIComponent(url); |
| | 160 | request.open("GET", url, true); |
| | 161 | request.onreadystatechange = function() { |
| | 162 | if (request.readyState == 4) { |
| | 163 | var xmlDoc = request.responseXML; |
| | 164 | var markers = xmlDoc.documentElement.getElementsByTagName("Placemark"); |
| | 165 | var len = Math.min(markers.length, 20); |
| | 166 | for (var i = 0; i < len; i++) { |
| | 167 | var lng = parseFloat(markers[i].getElementsByTagName("longitude")[0].childNodes[0].data); |
| | 168 | var lat = parseFloat(markers[i].getElementsByTagName("latitude")[0].childNodes[0].data); |
| | 169 | var point = new GPoint.exjp_create(lng, lat); |
| | 170 | if (!i) map.centerAndZoom(point, 4); |
| | 171 | var names = markers[i].getElementsByTagName("name"); |
| | 172 | var name = names.length ? names[0].childNodes[0].data : ''; |
| | 173 | var descs = markers[i].getElementsByTagName("description"); |
| | 174 | var desc = descs.length ? descs[0].childNodes[0].data : ''; |
| | 175 | var marker = new createMarker(point, i, name, desc); |
| | 176 | map.addOverlay(marker); |
| | 177 | } |
| 143 | | |
| 144 | | var metalink = document.getElementById("meta"); |
| 145 | | // var markers = new Array(); |
| 146 | | // function triggerMarker(index) { |
| 147 | | // GEvent.trigger(markers[index], "click"); |
| 148 | | // } |
| 149 | | |
| 150 | | function createSubMarker(index, name, marker) { |
| 151 | | // var letter = String.fromCharCode("A".charCodeAt(0) + index); |
| 152 | | // var image = "http://www.google.com/mapfiles/marker" + letter + ".png"; |
| 153 | | var image = tinyIcon.image; |
| 154 | | metalink.innerHTML += "<li><img src=\"" + image + "\"> " + name + "</li>\n"; |
| 155 | | // metalink.innerHTML += "<li onclick=\"triggerMarker(" + index + ")\"><img src=\"" + image + "\"> " + name + "</li>\n"; |
| 156 | | //markers[index] = marker; |
| 157 | | } |
| 158 | | |
| 159 | | var request = GXmlHttp.create(); |
| 160 | | var f = window.location.search; |
| 161 | | var i = f.indexOf('?url='); |
| 162 | | f = (i != -1) ? decodeURIComponent(f.substr(i+5)) : 'data.xml'; |
| 163 | | request.open("GET", f, true); |
| 164 | | request.onreadystatechange = function() { |
| 165 | | if (request.readyState == 4) { |
| 166 | | var xmlDoc = request.responseXML; |
| 167 | | var markers = xmlDoc.documentElement.getElementsByTagName("Placemark"); |
| 168 | | for (var i = 0; i < markers.length; i++) { |
| 169 | | var lng = parseFloat(markers[i].getElementsByTagName("longitude")[0].childNodes[0].data); |
| 170 | | var lat = parseFloat(markers[i].getElementsByTagName("latitude")[0].childNodes[0].data); |
| 171 | | // var point = new GPoint(lng, lat); |
| 172 | | var point = new GPoint.exjp_create(lng, lat); |
| 173 | | if (!i) |
| 174 | | map.centerAndZoom(point, 1); |
| 175 | | var name = markers[i].getElementsByTagName("name")[0].childNodes[0].data || ''; |
| 176 | | var desc = markers[i].getElementsByTagName("description")[0].childNodes[0].data || ''; |
| 177 | | var marker = new createMarker(point, i, name, desc); |
| 178 | | map.addOverlay(marker); |
| 179 | | createSubMarker(i, name, marker); |
| 180 | | } |
| 181 | | } |
| 182 | | } |
| 183 | | request.send(null); |