var FacilPad = { SERVER : "http://localhost:40829", map : null, socket : null, layerMarkers : null, clickListeners : [ ], onMove : null, onMoveEnd : null, markersById : { }, onClickMarker : null, linesById : { }, onClickLine : null }; (function(fp) { var $; if(Function.prototype.bind == null) { Function.prototype.bind = function(context) { var args = Array.prototype.slice.call(arguments, 1); var func = this; return function() { var newArgs = args.concat(Array.prototype.slice.call(arguments)); return func.apply(context, newArgs); } }; } loadJavaScript("lib/async-0.6.2.min.js", function() { async.auto({ "FacilMap" : loadJavaScript.bind(null, "https://api.facilmap.org/facilmap_ol_src.js"), "angular" : loadJavaScript.bind(null, "lib/angular-1.2.16.min.js"), "socketIo" : loadJavaScript.bind(null, fp.SERVER+"/socket.io/socket.io.js"), "marked" : loadJavaScript.bind(null, "lib/marked-0.3.2.min.js"), "loadMap" : [ "FacilMap", loadMap ], "jQuery" : [ "FacilMap", function(next) { jQuery = $ = FacilMap.$; next(); }], "ng" : [ "angular", "jQuery", "socketIo", "loadMap", "marked", loadJavaScript.bind(null, "js/ng.js") ] }); }); function loadMap(callback) { fp.map = new FacilMap.Map("map"); fp.map.addAllAvailableLayers(); //fp.layerMarkers = new FacilMap.Layer.Markers("Markers", { displayInLayerSwitcher: false }); //fp.map.addLayer(fp.layerMarkers); fp.layerLines = new OpenLayers.Layer.Vector("Lines", { displayInLayerSwitcher: false, visibility: true }); fp.map.addLayer(fp.layerLines); fp.featureHandler = new OpenLayers.Handler.Feature(null, fp.layerLines, { "over" : function() { $(fp.map.div).addClass("fp-overFeature"); }, "out" : function() { $(fp.map.div).removeClass("fp-overFeature"); }, "click" : function(obj) { obj.fpOnClick(fp.xyToPos(fp.featureHandler.fpXy)); } }, { map: fp.map }); var handleBkp = fp.featureHandler.handle; fp.featureHandler.handle = function(e) { if(e.type == "click") this.fpXy = new OpenLayers.Pixel(e.x, e.y); return handleBkp.apply(this, arguments); }; fp.featureHandler.activate(); fp.map.events.register("click", map, function(e) { var listener = fp.clickListeners.shift(); if(fp.clickListeners.length == 0) { $(fp.map.div).removeClass("fp-clickHandler"); fp.featureHandler.activate(); } listener && listener(fp.xyToPos(e.xy)); }); fp.map.events.register("move", this, function() { fp.onMove(); }); fp.map.events.register("moveend", this, function(){ var x = fp.map.getExtent().clone().transform(fp.map.getProjectionObject(), _p()); fp.onMoveEnd({ top: x.top, left: x.left, bottom: x.bottom, right: x.right }); }); callback(); } // From http://stackoverflow.com/a/4845802/242365 function loadJavaScript(url, callback) { var head = document.getElementsByTagName("head")[0] || document.documentElement; var script = document.createElement("script"); script.src = url; // Handle Script loading var done = false; // Attach handlers for all browsers script.onload = script.onreadystatechange = function() { if(!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") ) { done = true; callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if(head && script.parentNode) { head.removeChild(script); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. // This arises when a base node is used (#2709 and #4378). head.insertBefore(script, head.firstChild); } function _p() { return new OpenLayers.Projection("EPSG:4326"); } fp.getCurrentView = function() { var ret = { view: fp.map.getExtent().clone().transform(fp.map.getProjectionObject(), _p()), baseLayer: fp.map.baseLayer.permalinkName, layers: [ ] }; for(var i=0; i 0) fp.map.setBaseLayer(matching_layers[0]); for(var i=0; i