Mercurial > hg > batmud > gmap2
view markers.js @ 176:d68111417b8e gmap2
Fix opening of infowindow.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 11 Mar 2014 22:34:26 +0200 |
parents | a1a725a9541d |
children | 662e8b5ec9a5 |
line wrap: on
line source
// $Id: markers.js 2284 2009-09-21 12:47:20Z jeskko $ // // List of marker types // var pmapMarkerTypes = [ ["Guilds", "guild"], ["PCities", "pcity"], ["Shrines", "shrine"], ["Areas", "default"], ]; var pmapMMgr; var pmapAreas = []; var pmapMarkers = []; var pmapMIndex = 0; var pmapBIndex = 0; var pmapBuiltin = []; var pmapSideBuiltinHTML, pmapSidePublicHTML, pmapSidePrivateHTML; var pmapInfoWindow; function pmapMyClick(i) { pmap.panTo(pmapMarkers[i].getPosition()); setTimeout("pmapShowInfo("+ i +")", 1000); } function pmapShowInfo(i) { google.maps.event.trigger(pmapMarkers[i], "click"); } function pmapCreateMarker(point,name,html,icon,type,continent,mclass) { var marker = new google.maps.Marker( { position: point, icon: icon, }); google.maps.event.addListener(marker, "click", function() { pmapInfoWindow.setContent("<div class=\"infowin\">"+html+"</div>"); pmapInfoWindow.open(pmap, this); }); if (mclass == "builtin") { pmapBuiltin[pmapBIndex] = new Array(2); pmapBuiltin[pmapBIndex][0] = type; pmapBuiltin[pmapBIndex][1] = continent; pmapSideBuiltinHTML += '<a class="'+continent+'" id="marker'+pmapBIndex+'" href="javascript:pmapMyClick('+ pmapMIndex +')">'+ name +'</a>'; pmapBIndex++; } if (mclass == "private") pmapSidePrivateHTML += '<a href="javascript:pmapMyClick(' + pmapMIndex + ')">' + name + '</a><br>'; if (mclass == "public") pmapSidePublicHTML += '<a href="javascript:pmapMyClick(' + pmapMIndex + ')">' + name + '</a><br>'; pmapMarkers[pmapMIndex++] = marker; return marker; } function pmapCreateMarkerType(m, mclass) { var type = m["type"]; if (type == "") type = "default"; if (name.indexOf('FERRY') == 0) type = "ferry"; var ppos = pmapMapCoordsToLatLng(new google.maps.Point(m["x"] * 2 + 1, m["y"] * 2 + 1), 7); var marker = pmapCreateMarker(ppos, m["name"], m["html"], pmapIcons[type], type, m["continent"], mclass); if (pmapAreas[type] == undefined) pmapAreas[type] = []; pmapAreas[type].push(marker); } function pmapAddMarkers(mlist, minzoom, maxzoom) { if (mlist) pmapMMgr.addMarkers(mlist, minzoom, maxzoom); } function pmapInitializeMarkers() { pmapMMgr = new MarkerManager(pmap); google.maps.event.addListener(pmapMMgr, 'loaded', pmapLoadMarkers); } function pmapLoadMarkers() { pmapInfoWindow = new google.maps.InfoWindow; // // Parse regular markers from JSON // XDownloadUrl("markers.json", function(data, responseCode) { var markers = JSON.parse(data); pmapSideBuiltinHTML = ""; pmapSidePublicHTML = ""; pmapSidePrivateHTML = ""; for (var nid = 0; nid < markers.length; nid++) { pmapCreateMarkerType(markers[nid], "builtin"); } pmapAddMarkers(pmapAreas["default"], 7, 11); pmapAddMarkers(pmapAreas["guild"], 6, 11); pmapAddMarkers(pmapAreas["shrine"], 7, 11); pmapAddMarkers(pmapAreas["ferry"], 4, 11); pmapAddMarkers(pmapAreas["city"], 4, 11); pmapAddMarkers(pmapAreas["pcity"], 8, 11); pmapAddMarkers(pmapAreas["fort"], 8, 11); pmapMMgr.refresh(); document.getElementById("sidecontent").innerHTML = pmapSideBuiltinHTML; }); // // Parse tradelane markers from another JSON // XDownloadUrl("tradelane.json", function(data,responseCode) { var markers = JSON.parse(data); for (var nid = 0; nid < markers.length; nid++) { pmapCreateMarkerType(markers[nid], "tradelane"); } pmapAddMarkers(pmapAreas["tradelane"], 5, 11); pmapMMgr.refresh(); }); // // Create GMap polylines from tradelane line data // XDownloadUrl("troverlay.json", function(data,responseCode) { var lines = JSON.parse(data); // Go through array of line elements for (var nid = 0; nid < lines.length; nid++) { var points = lines[nid]; var coords = []; // Create polyline points for (var npt = 0; npt < points.length; npt++) { var pt = points[npt]; coords.push(pmapMapCoordsToLatLng(new google.maps.Point(pt["x"] * 2 + 1, pt["y"] * 2 + 1), 7)); } // Create new polyline and add it to map overlay var poly = new google.maps.Polyline({ path: coords, strokeColor: "#ffffff", strokeWeight: 1, strokeOpacity: 0.7 }); poly.setMap(pmap); } }); // // Create map control elements // var str = ""; var n = 0; for (var i = 0; i < pmapContinents.length; i++) { var q = pmapContinents[i]; if (q != null) { var c = q[0]; str += "<span id=\"sp"+c+"\"><a href=\"javascript:pmapToggleVisContinent('"+c+"')\">"+c+"</a></span>\n"; if (n == 2) str += "<br />\n"; n++; } } str += "<span id=\"spall_c\"><a href=\"javascript:pmapToggleVisContinent('all_c')\">All</a></span>\n"; str += "<br /><br />\n"; n = 0; for (var i = 0; i < pmapMarkerTypes.length; i++) { var q = pmapMarkerTypes[i]; if (q != null) { var c = q[1]; str += "<span id=\"sp"+c+"\"><a href=\"javascript:pmapToggleVisType('"+c+"')\">"+pmapMarkerTypes[i][0]+"</a></span>\n"; if (n == 2) str += "<br />\n"; n++; } } str += "<span id=\"spall_t\"><a href=\"javascript:pmapToggleVisType('all_t')\">All</a></span>\n"; document.getElementById("controls").innerHTML = str; pmapSetVisContinent("all_c", true); pmapSetVisType("all_t", true); pmapUpdateVisible(); } // // Map menu / sidebar control code // var markerVisStates = []; function pmapSetVisState(c, show) { markerVisStates[c] = show; document.getElementById("sp" + c).style.background = show ? "white" : "red"; } function pmapUpdateVisible() { for (var i = 0; i < pmapBuiltin.length; i++) { var show = markerVisStates[pmapBuiltin[i][0]] && markerVisStates[pmapBuiltin[i][1]]; document.getElementById("marker" + i).style.display = show ? "block" : "none"; } } function pmapSetVisContinent(c, show) { pmapSetVisState(c, show); if (c == "all_c") { for (var i = 0; i < pmapContinents.length; i++) { var q = pmapContinents[i]; if (q != null) pmapSetVisState(q[0], show); } } } function pmapSetVisType(c, show) { pmapSetVisState(c, show); if (c == "all_t") { for (var i = 0; i < pmapMarkerTypes.length; i++) { var q = pmapMarkerTypes[i]; if (q != null) pmapSetVisState(q[1], show); } } } function pmapToggleVisContinent(c) { var first = false; if (c != "all_c") { for (var i = 0; i < pmapContinents.length; i++) { var q = pmapContinents[i]; if (q != null) if (markerVisStates[pmapBuiltin[i][0]]) first = true; } if (first) { pmapSetVisContinent("all_c", false); pmapSetVisContinent(c, true); } } if (!first) { pmapSetVisContinent(c, !markerVisStates[c]); } pmapUpdateVisible(); } function pmapToggleVisType(c) { pmapSetVisType(c, !markerVisStates[c]); pmapUpdateVisible(); }