Loading src/Proj.js +3 −133 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ Proj4js.Proj = Proj4js.Class({ * Property: readyToUse * Flag to indicate if initialization is complete for this Proj object */ readyToUse: false, readyToUse: true, /** * Property: title Loading Loading @@ -143,138 +143,8 @@ Proj4js.Proj = Proj4js.Class({ this.srsProjNumber = this.srsCode; } this.loadProjDefinition(); }, /** * Function: loadProjDefinition * Loads the coordinate system initialization string if required. * Note that dynamic loading happens asynchronously so an application must * wait for the readyToUse property is set to true. * To prevent dynamic loading, include the defs through a script tag in * your application. * */ loadProjDefinition: function() { //check in memory if (Proj4js.defs[this.srsCode]) { this.defsLoaded(); return; } //else check for def on the server var url = Proj4js.getScriptLocation() + 'defs/' + this.srsAuth.toUpperCase() + this.srsProjNumber + '.js'; Proj4js.loadScript(url, Proj4js.bind(this.defsLoaded, this), Proj4js.bind(this.loadFromService, this), Proj4js.bind(this.checkDefsLoaded, this) ); }, /** * Function: loadFromService * Creates the REST URL for loading the definition from a web service and * loads it. * */ loadFromService: function() { //else load from web service var url = Proj4js.defsLookupService +'/' + this.srsAuth +'/'+ this.srsProjNumber + '/proj4js/'; Proj4js.loadScript(url, Proj4js.bind(this.defsLoaded, this), Proj4js.bind(this.defsFailed, this), Proj4js.bind(this.checkDefsLoaded, this) ); }, /** * Function: defsLoaded * Continues the Proj object initilization once the def file is loaded * */ defsLoaded: function() { this.parseDefs(); this.loadProjCode(this.projName); }, /** * Function: checkDefsLoaded * This is the loadCheck method to see if the def object exists * */ checkDefsLoaded: function() { if (Proj4js.defs[this.srsCode]) { return true; } else { return false; } }, /** * Function: defsFailed * Report an error in loading the defs file, but continue on using WGS84 * */ defsFailed: function() { Proj4js.reportError('failed to load projection definition for: '+this.srsCode); Proj4js.defs[this.srsCode] = Proj4js.defs['WGS84']; //set it to something so it can at least continue this.defsLoaded(); }, /** * Function: loadProjCode * Loads projection class code dynamically if required. * Projection code may be included either through a script tag or in * a built version of proj4js * */ loadProjCode: function(projName) { if (Proj4js.Proj[projName]) { this.initTransforms(); return; } //the URL for the projection code var url = Proj4js.getScriptLocation() + 'projCode/' + projName + '.js'; Proj4js.loadScript(url, Proj4js.bind(this.loadProjCodeSuccess, this, projName), Proj4js.bind(this.loadProjCodeFailure, this, projName), Proj4js.bind(this.checkCodeLoaded, this, projName) ); }, /** * Function: loadProjCodeSuccess * Loads any proj dependencies or continue on to final initialization. * */ loadProjCodeSuccess: function(projName) { if (Proj4js.Proj[projName].dependsOn){ this.loadProjCode(Proj4js.Proj[projName].dependsOn); } else { this.initTransforms(); } }, /** * Function: defsFailed * Report an error in loading the proj file. Initialization of the Proj * object has failed and the readyToUse flag will never be set. * */ loadProjCodeFailure: function(projName) { Proj4js.reportError("failed to find projection file for: " + projName); //TBD initialize with identity transforms so proj will still work? }, /** * Function: checkCodeLoaded * This is the loadCheck method to see if the projection code is loaded * */ checkCodeLoaded: function(projName) { if (Proj4js.Proj[projName]) { return true; } else { return false; } }, /** Loading src/Proj4js.js +0 −92 Original line number Diff line number Diff line Loading @@ -440,97 +440,5 @@ var Proj4js = { ); return func.apply(object, newArgs); }; }, /** * The following properties and methods handle dynamic loading of JSON objects. */ /** * Property: scriptName * {String} The filename of this script without any path. */ scriptName: "proj4js.js", /** * Property: defsLookupService * AJAX service to retreive projection definition parameters from */ defsLookupService: 'http://spatialreference.org/ref', /** * Property: libPath * internal: http server path to library code. */ libPath: null, /** * Function: getScriptLocation * Return the path to this script. * * Returns: * Path to this script */ getScriptLocation: function () { if (this.libPath) return this.libPath; var scriptName = this.scriptName; var scriptNameLen = scriptName.length; var scripts = document.getElementsByTagName('script'); for (var i = 0; i < scripts.length; i++) { var src = scripts[i].getAttribute('src'); if (src) { var index = src.lastIndexOf(scriptName); // is it found, at the end of the URL? if ((index > -1) && (index + scriptNameLen == src.length)) { this.libPath = src.slice(0, -scriptNameLen); break; } } } return this.libPath||""; }, /** * Function: loadScript * Load a JS file from a URL into a <script> tag in the page. * * Parameters: * url - {String} The URL containing the script to load * onload - {Function} A method to be executed when the script loads successfully * onfail - {Function} A method to be executed when there is an error loading the script * loadCheck - {Function} A boolean method that checks to see if the script * has loaded. Typically this just checks for the existance of * an object in the file just loaded. */ loadScript: function(url, onload, onfail, loadCheck) { var script = document.createElement('script'); script.defer = false; script.type = "text/javascript"; script.id = url; script.onload = onload; script.onerror = onfail; script.loadCheck = loadCheck; if (/MSIE/.test(navigator.userAgent)) { script.onreadystatechange = this.checkReadyState; } document.getElementsByTagName('head')[0].appendChild(script); script.src = url; }, /** * Function: checkReadyState * IE workaround since there is no onerror handler. Calls the user defined * loadCheck method to determine if the script is loaded. * */ checkReadyState: function() { if (this.readyState == 'loaded') { if (!this.loadCheck()) { this.onerror(); } else { this.onload(); } } } }; Loading
src/Proj.js +3 −133 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ Proj4js.Proj = Proj4js.Class({ * Property: readyToUse * Flag to indicate if initialization is complete for this Proj object */ readyToUse: false, readyToUse: true, /** * Property: title Loading Loading @@ -143,138 +143,8 @@ Proj4js.Proj = Proj4js.Class({ this.srsProjNumber = this.srsCode; } this.loadProjDefinition(); }, /** * Function: loadProjDefinition * Loads the coordinate system initialization string if required. * Note that dynamic loading happens asynchronously so an application must * wait for the readyToUse property is set to true. * To prevent dynamic loading, include the defs through a script tag in * your application. * */ loadProjDefinition: function() { //check in memory if (Proj4js.defs[this.srsCode]) { this.defsLoaded(); return; } //else check for def on the server var url = Proj4js.getScriptLocation() + 'defs/' + this.srsAuth.toUpperCase() + this.srsProjNumber + '.js'; Proj4js.loadScript(url, Proj4js.bind(this.defsLoaded, this), Proj4js.bind(this.loadFromService, this), Proj4js.bind(this.checkDefsLoaded, this) ); }, /** * Function: loadFromService * Creates the REST URL for loading the definition from a web service and * loads it. * */ loadFromService: function() { //else load from web service var url = Proj4js.defsLookupService +'/' + this.srsAuth +'/'+ this.srsProjNumber + '/proj4js/'; Proj4js.loadScript(url, Proj4js.bind(this.defsLoaded, this), Proj4js.bind(this.defsFailed, this), Proj4js.bind(this.checkDefsLoaded, this) ); }, /** * Function: defsLoaded * Continues the Proj object initilization once the def file is loaded * */ defsLoaded: function() { this.parseDefs(); this.loadProjCode(this.projName); }, /** * Function: checkDefsLoaded * This is the loadCheck method to see if the def object exists * */ checkDefsLoaded: function() { if (Proj4js.defs[this.srsCode]) { return true; } else { return false; } }, /** * Function: defsFailed * Report an error in loading the defs file, but continue on using WGS84 * */ defsFailed: function() { Proj4js.reportError('failed to load projection definition for: '+this.srsCode); Proj4js.defs[this.srsCode] = Proj4js.defs['WGS84']; //set it to something so it can at least continue this.defsLoaded(); }, /** * Function: loadProjCode * Loads projection class code dynamically if required. * Projection code may be included either through a script tag or in * a built version of proj4js * */ loadProjCode: function(projName) { if (Proj4js.Proj[projName]) { this.initTransforms(); return; } //the URL for the projection code var url = Proj4js.getScriptLocation() + 'projCode/' + projName + '.js'; Proj4js.loadScript(url, Proj4js.bind(this.loadProjCodeSuccess, this, projName), Proj4js.bind(this.loadProjCodeFailure, this, projName), Proj4js.bind(this.checkCodeLoaded, this, projName) ); }, /** * Function: loadProjCodeSuccess * Loads any proj dependencies or continue on to final initialization. * */ loadProjCodeSuccess: function(projName) { if (Proj4js.Proj[projName].dependsOn){ this.loadProjCode(Proj4js.Proj[projName].dependsOn); } else { this.initTransforms(); } }, /** * Function: defsFailed * Report an error in loading the proj file. Initialization of the Proj * object has failed and the readyToUse flag will never be set. * */ loadProjCodeFailure: function(projName) { Proj4js.reportError("failed to find projection file for: " + projName); //TBD initialize with identity transforms so proj will still work? }, /** * Function: checkCodeLoaded * This is the loadCheck method to see if the projection code is loaded * */ checkCodeLoaded: function(projName) { if (Proj4js.Proj[projName]) { return true; } else { return false; } }, /** Loading
src/Proj4js.js +0 −92 Original line number Diff line number Diff line Loading @@ -440,97 +440,5 @@ var Proj4js = { ); return func.apply(object, newArgs); }; }, /** * The following properties and methods handle dynamic loading of JSON objects. */ /** * Property: scriptName * {String} The filename of this script without any path. */ scriptName: "proj4js.js", /** * Property: defsLookupService * AJAX service to retreive projection definition parameters from */ defsLookupService: 'http://spatialreference.org/ref', /** * Property: libPath * internal: http server path to library code. */ libPath: null, /** * Function: getScriptLocation * Return the path to this script. * * Returns: * Path to this script */ getScriptLocation: function () { if (this.libPath) return this.libPath; var scriptName = this.scriptName; var scriptNameLen = scriptName.length; var scripts = document.getElementsByTagName('script'); for (var i = 0; i < scripts.length; i++) { var src = scripts[i].getAttribute('src'); if (src) { var index = src.lastIndexOf(scriptName); // is it found, at the end of the URL? if ((index > -1) && (index + scriptNameLen == src.length)) { this.libPath = src.slice(0, -scriptNameLen); break; } } } return this.libPath||""; }, /** * Function: loadScript * Load a JS file from a URL into a <script> tag in the page. * * Parameters: * url - {String} The URL containing the script to load * onload - {Function} A method to be executed when the script loads successfully * onfail - {Function} A method to be executed when there is an error loading the script * loadCheck - {Function} A boolean method that checks to see if the script * has loaded. Typically this just checks for the existance of * an object in the file just loaded. */ loadScript: function(url, onload, onfail, loadCheck) { var script = document.createElement('script'); script.defer = false; script.type = "text/javascript"; script.id = url; script.onload = onload; script.onerror = onfail; script.loadCheck = loadCheck; if (/MSIE/.test(navigator.userAgent)) { script.onreadystatechange = this.checkReadyState; } document.getElementsByTagName('head')[0].appendChild(script); script.src = url; }, /** * Function: checkReadyState * IE workaround since there is no onerror handler. Calls the user defined * loadCheck method to determine if the script is loaded. * */ checkReadyState: function() { if (this.readyState == 'loaded') { if (!this.loadCheck()) { this.onerror(); } else { this.onload(); } } } };