From 28eb054511212d154ab3e1d9a2603e39c524f77e Mon Sep 17 00:00:00 2001 From: SergioGutTal Date: Thu, 13 Jul 2017 10:38:04 -0400 Subject: [PATCH 1/4] Updated src file to latest built dist --- src/leaflet.utfgrid.js | 43 ++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/leaflet.utfgrid.js b/src/leaflet.utfgrid.js index 3705b05..3086f22 100644 --- a/src/leaflet.utfgrid.js +++ b/src/leaflet.utfgrid.js @@ -1,32 +1,35 @@ -L.Util.ajax = function (url, timeout, success, error) { - +L.Util.ajax = function (url, success, error) { + // the following is from JavaScript: The Definitive Guide + // and https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest_in_IE6 if (window.XMLHttpRequest === undefined) { - error(new Error("XMLHttpRequest is not supported")); + window.XMLHttpRequest = function () { + /*global ActiveXObject:true */ + try { + return new ActiveXObject("Microsoft.XMLHTTP"); + } + catch (e) { + throw new Error("XMLHttpRequest is not supported"); + } + }; } var response, request = new XMLHttpRequest(); request.open("GET", url); request.onreadystatechange = function () { + /*jshint evil: true */ if (request.readyState === 4) { if (request.status === 200) { if (window.JSON) { - try { - response = JSON.parse(request.responseText); - success(response); - } catch(e) { - error(e); - } + response = JSON.parse(request.responseText); } else { - error(new Error('json not supported')); + response = eval("(" + request.responseText + ")"); } - } else if (!request.status) { - error('Attempted cross origin request without CORS enabled'); - } else { + success(response); + } else if (request.status !== 0 && error !== undefined) { error(request.status); } } }; request.ontimeout = function () { error('timeout'); }; - request.timeout = timeout; request.send(); return request; }; @@ -83,7 +86,7 @@ L.UtfGrid = (L.Layer || L.Class).extend({ this._update(); - var zoom = this._map.getZoom(); + var zoom = Math.round(this._map.getZoom()); if (zoom > this.options.maxZoom || zoom < this.options.minZoom) { return; @@ -185,7 +188,7 @@ L.UtfGrid = (L.Layer || L.Class).extend({ _update: function () { var bounds = this._map.getPixelBounds(), - zoom = this._map.getZoom(), + zoom = Math.round(this._map.getZoom()), tileSize = this.options.tileSize; if (zoom > this.options.maxZoom || zoom < this.options.minZoom) { @@ -278,9 +281,10 @@ L.UtfGrid = (L.Layer || L.Class).extend({ _ajaxRequestFactory: function (key, url) { var successCallback = this._successCallbackFactory(key); - var errorCallback = this._errorCallbackFactory(url, key); + var errorCallback = this._errorCallbackFactory(url); return function () { - var request = L.Util.ajax(url, this.options.requestTimeout, successCallback, errorCallback); + var request = L.Util.ajax(url, successCallback, errorCallback); + request.timeout = this.options.requestTimeout; return request; }.bind(this); }, @@ -292,9 +296,8 @@ L.UtfGrid = (L.Layer || L.Class).extend({ }.bind(this); }, - _errorCallbackFactory: function (tileurl, key) { + _errorCallbackFactory: function (tileurl) { return function (statuscode) { - this._finish_request(key); this.fire('tileerror', { url: tileurl, code: statuscode From dfae3815354ad210e12b08901292eba862dbfa38 Mon Sep 17 00:00:00 2001 From: SergioGutTal Date: Thu, 13 Jul 2017 10:43:16 -0400 Subject: [PATCH 2/4] Fixed L.Util.ajax to work with Leaflet 1.1.x --- dist/leaflet.utfgrid-src.js | 5 +++-- dist/leaflet.utfgrid.js | 2 +- src/leaflet.utfgrid.js | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dist/leaflet.utfgrid-src.js b/dist/leaflet.utfgrid-src.js index de36722..10b9a3d 100644 --- a/dist/leaflet.utfgrid-src.js +++ b/dist/leaflet.utfgrid-src.js @@ -7,7 +7,7 @@ */ (function (window, undefined) { -L.Util.ajax = function (url, success, error) { +L.ajax = function (url, success, error) { // the following is from JavaScript: The Definitive Guide // and https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest_in_IE6 if (window.XMLHttpRequest === undefined) { @@ -292,7 +292,7 @@ L.UtfGrid = (L.Layer || L.Class).extend({ var successCallback = this._successCallbackFactory(key); var errorCallback = this._errorCallbackFactory(url); return function () { - var request = L.Util.ajax(url, successCallback, errorCallback); + var request = L.ajax(url, successCallback, errorCallback); request.timeout = this.options.requestTimeout; return request; }.bind(this); @@ -411,4 +411,5 @@ L.utfGrid = function (url, options) { + }(window)); \ No newline at end of file diff --git a/dist/leaflet.utfgrid.js b/dist/leaflet.utfgrid.js index 3d1da4e..ba79661 100644 --- a/dist/leaflet.utfgrid.js +++ b/dist/leaflet.utfgrid.js @@ -5,4 +5,4 @@ * * @license MIT */ -(function(window,undefined){L.Util.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){throw Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){request.readyState===4&&(request.status===200?(window.JSON?response=JSON.parse(request.responseText):response=eval("("+request.responseText+")"),success(response)):request.status!==0&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Mixin.Events,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(e,t){L.Util.setOptions(this,t),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=e,this._cache={};var n=0;while(window["lu"+n])n++;this._windowKey="lu"+n,window[this._windowKey]={};var r=this.options.subdomains;typeof this.options.subdomains=="string"&&(this.options.subdomains=r.split(""))},onAdd:function(e){this._map=e,this._container=this._map._container,this._update();var t=this._map.getZoom();if(t>this.options.maxZoom||tthis.options.maxZoom||t=0&&this._requests_in_process.splice(t,1),t=this._request_queue.indexOf(e),t>=0&&this._request_queue.splice(t,1),this._requests[e]&&(this._requests[e].timeout&&window.clearTimeout(this._requests[e].timeout),delete this._requests[e]),this._process_queued_requests(),this._requests_in_process.length===0&&this.fire("load")},_abort_request:function(e){this._requests[e]&&this._requests[e].handler&&typeof this._requests[e].handler.abort=="function"&&this._requests[e].handler.abort(),this._cache[e]===null&&delete this._cache[e],this._finish_request(e)},_process_queued_requests:function(){while(this._request_queue.length>0&&(this.options.maxRequests===0||this._requests_in_process.length=93&&e--,e>=35&&e--,e-32}}),L.utfGrid=function(e,t){return new L.UtfGrid(e,t)}})(window); \ No newline at end of file +!function(window,undefined){L.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){throw new Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){4===request.readyState&&(200===request.status?(response=window.JSON?JSON.parse(request.responseText):eval("("+request.responseText+")"),success(response)):0!==request.status&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Mixin.Events,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(t,e){L.Util.setOptions(this,e),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=t,this._cache={};for(var s=0;window["lu"+s];)s++;this._windowKey="lu"+s,window[this._windowKey]={};var i=this.options.subdomains;"string"==typeof this.options.subdomains&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._container=this._map._container,this._update();var e=Math.round(this._map.getZoom());e>this.options.maxZoom||ethis.options.maxZoom||e=0&&this._requests_in_process.splice(e,1),e=this._request_queue.indexOf(t),e>=0&&this._request_queue.splice(e,1),this._requests[t]&&(this._requests[t].timeout&&window.clearTimeout(this._requests[t].timeout),delete this._requests[t]),this._process_queued_requests(),0===this._requests_in_process.length&&this.fire("load")},_abort_request:function(t){this._requests[t]&&this._requests[t].handler&&"function"==typeof this._requests[t].handler.abort&&this._requests[t].handler.abort(),null===this._cache[t]&&delete this._cache[t],this._finish_request(t)},_process_queued_requests:function(){for(;this._request_queue.length>0&&(0===this.options.maxRequests||this._requests_in_process.length=93&&t--,t>=35&&t--,t-32}}),L.utfGrid=function(t,e){return new L.UtfGrid(t,e)}}(window);; \ No newline at end of file diff --git a/src/leaflet.utfgrid.js b/src/leaflet.utfgrid.js index 3086f22..eb3ba47 100644 --- a/src/leaflet.utfgrid.js +++ b/src/leaflet.utfgrid.js @@ -1,4 +1,4 @@ -L.Util.ajax = function (url, success, error) { +L.ajax = function (url, success, error) { // the following is from JavaScript: The Definitive Guide // and https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest_in_IE6 if (window.XMLHttpRequest === undefined) { @@ -283,7 +283,7 @@ L.UtfGrid = (L.Layer || L.Class).extend({ var successCallback = this._successCallbackFactory(key); var errorCallback = this._errorCallbackFactory(url); return function () { - var request = L.Util.ajax(url, successCallback, errorCallback); + var request = L.ajax(url, successCallback, errorCallback); request.timeout = this.options.requestTimeout; return request; }.bind(this); From f38a8ea78559fe34550d357ebac1563caff382c3 Mon Sep 17 00:00:00 2001 From: SergioGutTal Date: Thu, 13 Jul 2017 10:45:05 -0400 Subject: [PATCH 3/4] Updated future leaflet deprecation: L.Mixin.Events to L.Evented --- dist/leaflet.utfgrid-src.js | 2 +- dist/leaflet.utfgrid.js | 2 +- src/leaflet.utfgrid.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/leaflet.utfgrid-src.js b/dist/leaflet.utfgrid-src.js index 10b9a3d..57e1a21 100644 --- a/dist/leaflet.utfgrid-src.js +++ b/dist/leaflet.utfgrid-src.js @@ -43,7 +43,7 @@ L.ajax = function (url, success, error) { return request; }; L.UtfGrid = (L.Layer || L.Class).extend({ - includes: L.Mixin.Events, + includes: L.Evented, options: { subdomains: 'abc', diff --git a/dist/leaflet.utfgrid.js b/dist/leaflet.utfgrid.js index ba79661..cfb1a8e 100644 --- a/dist/leaflet.utfgrid.js +++ b/dist/leaflet.utfgrid.js @@ -5,4 +5,4 @@ * * @license MIT */ -!function(window,undefined){L.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){throw new Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){4===request.readyState&&(200===request.status?(response=window.JSON?JSON.parse(request.responseText):eval("("+request.responseText+")"),success(response)):0!==request.status&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Mixin.Events,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(t,e){L.Util.setOptions(this,e),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=t,this._cache={};for(var s=0;window["lu"+s];)s++;this._windowKey="lu"+s,window[this._windowKey]={};var i=this.options.subdomains;"string"==typeof this.options.subdomains&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._container=this._map._container,this._update();var e=Math.round(this._map.getZoom());e>this.options.maxZoom||ethis.options.maxZoom||e=0&&this._requests_in_process.splice(e,1),e=this._request_queue.indexOf(t),e>=0&&this._request_queue.splice(e,1),this._requests[t]&&(this._requests[t].timeout&&window.clearTimeout(this._requests[t].timeout),delete this._requests[t]),this._process_queued_requests(),0===this._requests_in_process.length&&this.fire("load")},_abort_request:function(t){this._requests[t]&&this._requests[t].handler&&"function"==typeof this._requests[t].handler.abort&&this._requests[t].handler.abort(),null===this._cache[t]&&delete this._cache[t],this._finish_request(t)},_process_queued_requests:function(){for(;this._request_queue.length>0&&(0===this.options.maxRequests||this._requests_in_process.length=93&&t--,t>=35&&t--,t-32}}),L.utfGrid=function(t,e){return new L.UtfGrid(t,e)}}(window);; \ No newline at end of file +!function(window,undefined){L.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){throw new Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){4===request.readyState&&(200===request.status?(response=window.JSON?JSON.parse(request.responseText):eval("("+request.responseText+")"),success(response)):0!==request.status&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Evented,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(t,e){L.Util.setOptions(this,e),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=t,this._cache={};for(var s=0;window["lu"+s];)s++;this._windowKey="lu"+s,window[this._windowKey]={};var i=this.options.subdomains;"string"==typeof this.options.subdomains&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._container=this._map._container,this._update();var e=Math.round(this._map.getZoom());e>this.options.maxZoom||ethis.options.maxZoom||e=0&&this._requests_in_process.splice(e,1),e=this._request_queue.indexOf(t),e>=0&&this._request_queue.splice(e,1),this._requests[t]&&(this._requests[t].timeout&&window.clearTimeout(this._requests[t].timeout),delete this._requests[t]),this._process_queued_requests(),0===this._requests_in_process.length&&this.fire("load")},_abort_request:function(t){this._requests[t]&&this._requests[t].handler&&"function"==typeof this._requests[t].handler.abort&&this._requests[t].handler.abort(),null===this._cache[t]&&delete this._cache[t],this._finish_request(t)},_process_queued_requests:function(){for(;this._request_queue.length>0&&(0===this.options.maxRequests||this._requests_in_process.length=93&&t--,t>=35&&t--,t-32}}),L.utfGrid=function(t,e){return new L.UtfGrid(t,e)}}(window);; \ No newline at end of file diff --git a/src/leaflet.utfgrid.js b/src/leaflet.utfgrid.js index eb3ba47..7687258 100644 --- a/src/leaflet.utfgrid.js +++ b/src/leaflet.utfgrid.js @@ -34,7 +34,7 @@ L.ajax = function (url, success, error) { return request; }; L.UtfGrid = (L.Layer || L.Class).extend({ - includes: L.Mixin.Events, + includes: L.Evented, options: { subdomains: 'abc', From b9b70250e5fbbddac0fe09a0d38c729b225a47ba Mon Sep 17 00:00:00 2001 From: SergioGutTal Date: Thu, 13 Jul 2017 10:46:57 -0400 Subject: [PATCH 4/4] Bugfix: Failed to execute 'removeChild' --- dist/leaflet.utfgrid-src.js | 4 +++- dist/leaflet.utfgrid.js | 2 +- src/leaflet.utfgrid.js | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dist/leaflet.utfgrid-src.js b/dist/leaflet.utfgrid-src.js index 57e1a21..f17f3ae 100644 --- a/dist/leaflet.utfgrid-src.js +++ b/dist/leaflet.utfgrid-src.js @@ -262,7 +262,9 @@ L.UtfGrid = (L.Layer || L.Class).extend({ window[wk][functionName] = function (data) { self._cache[key] = data; delete window[wk][functionName]; - head.removeChild(script); + if (script.parentElement===head) { + head.removeChild(script); + } self._finish_request(key); }; diff --git a/dist/leaflet.utfgrid.js b/dist/leaflet.utfgrid.js index cfb1a8e..71f0f5a 100644 --- a/dist/leaflet.utfgrid.js +++ b/dist/leaflet.utfgrid.js @@ -5,4 +5,4 @@ * * @license MIT */ -!function(window,undefined){L.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){throw new Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){4===request.readyState&&(200===request.status?(response=window.JSON?JSON.parse(request.responseText):eval("("+request.responseText+")"),success(response)):0!==request.status&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Evented,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(t,e){L.Util.setOptions(this,e),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=t,this._cache={};for(var s=0;window["lu"+s];)s++;this._windowKey="lu"+s,window[this._windowKey]={};var i=this.options.subdomains;"string"==typeof this.options.subdomains&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._container=this._map._container,this._update();var e=Math.round(this._map.getZoom());e>this.options.maxZoom||ethis.options.maxZoom||e=0&&this._requests_in_process.splice(e,1),e=this._request_queue.indexOf(t),e>=0&&this._request_queue.splice(e,1),this._requests[t]&&(this._requests[t].timeout&&window.clearTimeout(this._requests[t].timeout),delete this._requests[t]),this._process_queued_requests(),0===this._requests_in_process.length&&this.fire("load")},_abort_request:function(t){this._requests[t]&&this._requests[t].handler&&"function"==typeof this._requests[t].handler.abort&&this._requests[t].handler.abort(),null===this._cache[t]&&delete this._cache[t],this._finish_request(t)},_process_queued_requests:function(){for(;this._request_queue.length>0&&(0===this.options.maxRequests||this._requests_in_process.length=93&&t--,t>=35&&t--,t-32}}),L.utfGrid=function(t,e){return new L.UtfGrid(t,e)}}(window);; \ No newline at end of file +!function(window,undefined){L.ajax=function(url,success,error){window.XMLHttpRequest===undefined&&(window.XMLHttpRequest=function(){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){throw new Error("XMLHttpRequest is not supported")}});var response,request=new XMLHttpRequest;return request.open("GET",url),request.onreadystatechange=function(){4===request.readyState&&(200===request.status?(response=window.JSON?JSON.parse(request.responseText):eval("("+request.responseText+")"),success(response)):0!==request.status&&error!==undefined&&error(request.status))},request.ontimeout=function(){error("timeout")},request.send(),request},L.UtfGrid=(L.Layer||L.Class).extend({includes:L.Evented,options:{subdomains:"abc",minZoom:0,maxZoom:18,tileSize:256,resolution:4,useJsonP:!0,pointerCursor:!0,maxRequests:4,requestTimeout:6e4},_mouseOn:null,initialize:function(t,e){L.Util.setOptions(this,e),this._requests={},this._request_queue=[],this._requests_in_process=[],this._url=t,this._cache={};for(var s=0;window["lu"+s];)s++;this._windowKey="lu"+s,window[this._windowKey]={};var i=this.options.subdomains;"string"==typeof this.options.subdomains&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._container=this._map._container,this._update();var e=Math.round(this._map.getZoom());e>this.options.maxZoom||ethis.options.maxZoom||e=0&&this._requests_in_process.splice(e,1),e=this._request_queue.indexOf(t),e>=0&&this._request_queue.splice(e,1),this._requests[t]&&(this._requests[t].timeout&&window.clearTimeout(this._requests[t].timeout),delete this._requests[t]),this._process_queued_requests(),0===this._requests_in_process.length&&this.fire("load")},_abort_request:function(t){this._requests[t]&&this._requests[t].handler&&"function"==typeof this._requests[t].handler.abort&&this._requests[t].handler.abort(),null===this._cache[t]&&delete this._cache[t],this._finish_request(t)},_process_queued_requests:function(){for(;this._request_queue.length>0&&(0===this.options.maxRequests||this._requests_in_process.length=93&&t--,t>=35&&t--,t-32}}),L.utfGrid=function(t,e){return new L.UtfGrid(t,e)}}(window);; \ No newline at end of file diff --git a/src/leaflet.utfgrid.js b/src/leaflet.utfgrid.js index 7687258..9a11468 100644 --- a/src/leaflet.utfgrid.js +++ b/src/leaflet.utfgrid.js @@ -253,7 +253,9 @@ L.UtfGrid = (L.Layer || L.Class).extend({ window[wk][functionName] = function (data) { self._cache[key] = data; delete window[wk][functionName]; - head.removeChild(script); + if (script.parentElement===head) { + head.removeChild(script); + } self._finish_request(key); };