kmz_compressor 2.1.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8d4150ed49c4d494b601e80fc834eedb42687448fabf2aa6ca15135f50a5704d
|
4
|
+
data.tar.gz: e69879f14f2795a1a8c81d3430ef38c2aaf88bda6f2e08bf03cc776770225a4b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af42f8519f2f32894d9e767c88cf654d68c312af9c5d9b29c03259d5294e3c3dc637564d471a32c86ddabde57eae16a851ee0504bc275884828db9575e9720fd
|
7
|
+
data.tar.gz: 644b4b4841d7e3a25018afb468abe4a6142fcf005edbec11879ab6a653e864c01cea0ee1f0cfa7e4bba367e07165da44bdf7214efa7f994ef0ee138d099153c2
|
@@ -16,15 +16,16 @@ window.MapLayerManager = function(map){
|
|
16
16
|
var requestTimestamp = new Date;
|
17
17
|
var retryDelay = retryDelay || 2000;
|
18
18
|
|
19
|
-
kmlURL =
|
20
|
-
|
19
|
+
kmlURL = prepareUrl(kmlURL);
|
20
|
+
|
21
|
+
options = jQuery.extend(true, {zIndex:getDrawOrder(layerName)}, options); // Deep copy the options in case they are changed between now and when the map is ready to load
|
21
22
|
|
22
23
|
return $.ajax(kmlURL, {type:'head', statusCode:{
|
23
24
|
202: function(){ setTimeout(function(){ cacheAndLoadKMLLayer(kmlURL, layerName, options, retryDelay * 2) }, retryDelay) },
|
24
25
|
200: function(){
|
25
26
|
if (!requestTimestamps[layerName] || requestTimestamps[layerName] < requestTimestamp){
|
26
27
|
requestTimestamps[layerName] = requestTimestamp;
|
27
|
-
|
28
|
+
loadKMLLayerWithoutExtraParams(cachedKMZURL(kmlURL), layerName, options)
|
28
29
|
}
|
29
30
|
}
|
30
31
|
}}).error(function(){
|
@@ -34,9 +35,12 @@ window.MapLayerManager = function(map){
|
|
34
35
|
}
|
35
36
|
|
36
37
|
function loadKMLLayer(kmlURL, layerName, options) {
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
kmlURL = prepareUrl(kmlURL);
|
39
|
+
loadKMLLayerWithoutExtraParams(kmlURL, layerName, options)
|
40
|
+
}
|
41
|
+
|
42
|
+
function loadKMLLayerWithoutExtraParams(kmlURL, layerName, options) {
|
43
|
+
options = jQuery.extend(true, {zIndex:getDrawOrder(layerName), map:map}, options);
|
40
44
|
|
41
45
|
var kmlLayer = new google.maps.KmlLayer(kmlURL, options);
|
42
46
|
var layer = addLayer(layerName, kmlLayer)
|
@@ -145,6 +149,17 @@ window.MapLayerManager = function(map){
|
|
145
149
|
}
|
146
150
|
}
|
147
151
|
|
152
|
+
// Returns the draw order for the layer if it exists,
|
153
|
+
// Else generates and returns a new draw order
|
154
|
+
function getDrawOrder(layerName){
|
155
|
+
var layer = getLayer(layerName)
|
156
|
+
if (layer){
|
157
|
+
return layer.kml.getZIndex()
|
158
|
+
} else {
|
159
|
+
return zIndexCount++
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
148
163
|
function setKMLOptions(layerName, options){
|
149
164
|
var layer = getLayer(layerName)
|
150
165
|
if (layer){
|
@@ -171,7 +186,7 @@ window.MapLayerManager = function(map){
|
|
171
186
|
|
172
187
|
for (var i = 0; i < layerNames.length; i++){
|
173
188
|
var layer = getLayer(layerNames[i])
|
174
|
-
if (layer.error){
|
189
|
+
if (!layer || layer.error){
|
175
190
|
continue
|
176
191
|
}
|
177
192
|
|
@@ -218,6 +233,8 @@ window.MapLayerManager = function(map){
|
|
218
233
|
// Keep layers synced with their state
|
219
234
|
function sweep(){
|
220
235
|
var foundLayers = [];
|
236
|
+
var staleLayers = []
|
237
|
+
|
221
238
|
eachLayer(function(layer, index){
|
222
239
|
var kmlStatus = layer.kml ? layer.kml.getStatus() : null;
|
223
240
|
|
@@ -235,44 +252,77 @@ window.MapLayerManager = function(map){
|
|
235
252
|
}
|
236
253
|
|
237
254
|
// Remove old layers
|
238
|
-
// Sweep through layers from the newest to oldest, if a layer name is seen more than once,
|
255
|
+
// Sweep through layers from the newest to oldest, if a layer name is seen more than once, mark all but the newest for deletion
|
239
256
|
// Don't delete an instance if we haven't yet seen a version of it with status 'OK'
|
240
257
|
if ($.inArray(layer.name, foundLayers) > -1){
|
241
|
-
|
242
|
-
layers.splice(index, 1);
|
258
|
+
staleLayers.push(layer)
|
243
259
|
} else if (layer.loaded) {
|
244
260
|
foundLayers.push(layer.name)
|
245
261
|
}
|
246
262
|
})
|
263
|
+
|
264
|
+
// Delete stale layers
|
265
|
+
$.each(staleLayers, function(_, staleLayer){
|
266
|
+
eachLayer(function(layer, index){
|
267
|
+
if (layer == staleLayer){
|
268
|
+
layer.kml.setMap(null);
|
269
|
+
layers.splice(index, 1)
|
270
|
+
return false
|
271
|
+
}
|
272
|
+
})
|
273
|
+
})
|
247
274
|
}
|
248
275
|
|
249
|
-
|
250
|
-
|
251
|
-
|
276
|
+
function prepareUrl(kmlURL) {
|
277
|
+
kmlURL = sanitizeURI(kmlURL);
|
278
|
+
kmlURL = addExtraParams(kmlURL, window.MapLayerManager.extraParams);
|
279
|
+
return kmlURL;
|
280
|
+
}
|
281
|
+
|
282
|
+
function sanitizeURI(uri) {
|
252
283
|
var url = urlToObject(uri)
|
253
|
-
var pathname = ('/' + decodeURI(url.pathname)).replace(/^\/+/, '/').trim()
|
254
|
-
var search = decodeURIComponent(url.search.replace(/\+/g, '%20')).trim().replace(/^\?/, '') // Ensure all "plus spaces" are hex encoded spaces
|
284
|
+
var pathname = ('/' + decodeURI(url.pathname)).replace(/^\/+/, '/').trim() // Ensure there is a leading slash (IE doesn't provide one, Chrome does, FF does)
|
255
285
|
|
256
|
-
|
286
|
+
var search = url.search.replace(/%26/g, '%2526').replace(/%3D/g, '%253D') // Double encode & and = or else we will be unable to tell them apart from unencoded ones
|
287
|
+
search = search.replace(/\+/g, '%20') // Ensure all "plus spaces" are hex encoded spaces
|
288
|
+
search = decodeURIComponent(search).trim().replace(/^\?/, '') // Remove any leading ?
|
257
289
|
|
258
|
-
|
259
|
-
|
260
|
-
}
|
290
|
+
output = pathname
|
291
|
+
if (search !== '') { output += '?' }
|
261
292
|
|
262
293
|
// Encode the individual uri components
|
263
294
|
output += $.map(search.split('&'), function(component){
|
264
295
|
return $.map(component.split('='), function(kv){
|
296
|
+
// Unencode double encoded & and = from earlier
|
297
|
+
kv = kv.replace(/%26/g, '&').replace(/%3D/g, '=')
|
298
|
+
|
299
|
+
kv = encodeURIComponent(kv)
|
300
|
+
|
265
301
|
// HACK: Firefox 'helps' us out by encoding apostrophes as %27 in AJAX requests, However its encodeURIcomponent method
|
266
302
|
// does not. This difference causes a mismatch between the url we use to calculate the cache path in the browser
|
267
303
|
// and on the server. This hack undoes the damage. See https://bugzilla.mozilla.org/show_bug.cgi?id=407172
|
268
|
-
|
304
|
+
kv = kv.replace(/'/g, '%27')
|
305
|
+
|
306
|
+
return kv
|
269
307
|
}).join('=')
|
270
308
|
}).join('&')
|
309
|
+
|
271
310
|
url.href = output
|
272
311
|
|
273
312
|
return url.href
|
274
313
|
}
|
275
314
|
|
315
|
+
function addExtraParams(url, extraParams) {
|
316
|
+
url = urlToObject(url)
|
317
|
+
var paramString = $.param(extraParams || {})
|
318
|
+
|
319
|
+
if (paramString) {
|
320
|
+
url.search = url.search ? url.search + '&' + paramString : paramString
|
321
|
+
}
|
322
|
+
|
323
|
+
return url.href
|
324
|
+
}
|
325
|
+
|
276
326
|
function closeInfowindowsExcept(layerName){
|
277
327
|
eachLayer(function(layer){
|
278
328
|
if (layer.name != layerName){
|
@@ -317,6 +367,7 @@ window.MapLayerManager = function(map){
|
|
317
367
|
$(manager).trigger(data).trigger(nameData)
|
318
368
|
}
|
319
369
|
|
370
|
+
|
320
371
|
// INIT
|
321
372
|
|
322
373
|
// Because google events sometimes get missed, we ensure we're up to date every now and again
|
@@ -339,6 +390,7 @@ window.MapLayerManager = function(map){
|
|
339
390
|
this.hideLayer = hideLayer,
|
340
391
|
this.showLayer = showLayer,
|
341
392
|
this.setDrawOrder = setDrawOrder,
|
393
|
+
this.getDrawOrder = getDrawOrder,
|
342
394
|
this.eachLayer = eachLayer,
|
343
395
|
this.setKMLOptions = setKMLOptions
|
344
396
|
}
|
@@ -6,7 +6,7 @@ require 'kmz_compressor/middleware'
|
|
6
6
|
module KMZCompressor
|
7
7
|
class Railtie < Rails::Railtie
|
8
8
|
initializer "kmz_compressor.init" do |app|
|
9
|
-
app.config.middleware.use
|
9
|
+
app.config.middleware.use KMZCompressor::Middleware
|
10
10
|
|
11
11
|
Mime::Type.register "application/vnd.google-earth.kml+xml", :kml
|
12
12
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kmz_compressor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ryan Wallace
|
@@ -10,34 +9,25 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rails
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ">="
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '3.1'
|
23
|
-
- - "<"
|
24
|
-
- !ruby/object:Gem::Version
|
25
|
-
version: 4.2.0
|
26
21
|
type: :runtime
|
27
22
|
prerelease: false
|
28
23
|
version_requirements: !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
24
|
requirements:
|
31
25
|
- - ">="
|
32
26
|
- !ruby/object:Gem::Version
|
33
27
|
version: '3.1'
|
34
|
-
- - "<"
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 4.2.0
|
37
28
|
- !ruby/object:Gem::Dependency
|
38
29
|
name: rubyzip
|
39
30
|
requirement: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
31
|
requirements:
|
42
32
|
- - "~>"
|
43
33
|
- !ruby/object:Gem::Version
|
@@ -45,7 +35,6 @@ dependencies:
|
|
45
35
|
type: :runtime
|
46
36
|
prerelease: false
|
47
37
|
version_requirements: !ruby/object:Gem::Requirement
|
48
|
-
none: false
|
49
38
|
requirements:
|
50
39
|
- - "~>"
|
51
40
|
- !ruby/object:Gem::Version
|
@@ -58,41 +47,39 @@ executables: []
|
|
58
47
|
extensions: []
|
59
48
|
extra_rdoc_files: []
|
60
49
|
files:
|
50
|
+
- MIT-LICENSE
|
51
|
+
- README.rdoc
|
52
|
+
- app/assets/javascripts/kmz_compressor.js
|
61
53
|
- app/assets/javascripts/kmz_compressor/map_layer_manager.js
|
62
54
|
- app/assets/javascripts/kmz_compressor/polyfills.js
|
63
55
|
- app/assets/javascripts/kmz_compressor/sha2.js
|
64
|
-
-
|
65
|
-
- app/helpers/kmz_compressor/kml_helper.rb
|
56
|
+
- lib/kmz_compressor.rb
|
66
57
|
- lib/kmz_compressor/controller_extensions.rb
|
67
58
|
- lib/kmz_compressor/engine.rb
|
68
59
|
- lib/kmz_compressor/middleware.rb
|
69
60
|
- lib/kmz_compressor/railtie.rb
|
70
61
|
- lib/kmz_compressor/version.rb
|
71
|
-
- lib/kmz_compressor.rb
|
72
|
-
- MIT-LICENSE
|
73
|
-
- README.rdoc
|
74
62
|
homepage: http://github.com/culturecode/kmz_compressor
|
75
63
|
licenses: []
|
64
|
+
metadata: {}
|
76
65
|
post_install_message:
|
77
66
|
rdoc_options: []
|
78
67
|
require_paths:
|
79
68
|
- lib
|
80
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
70
|
requirements:
|
83
71
|
- - ">="
|
84
72
|
- !ruby/object:Gem::Version
|
85
73
|
version: '0'
|
86
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
75
|
requirements:
|
89
76
|
- - ">="
|
90
77
|
- !ruby/object:Gem::Version
|
91
78
|
version: '0'
|
92
79
|
requirements: []
|
93
80
|
rubyforge_project:
|
94
|
-
rubygems_version:
|
81
|
+
rubygems_version: 2.7.9
|
95
82
|
signing_key:
|
96
|
-
specification_version:
|
83
|
+
specification_version: 4
|
97
84
|
summary: Rack Middleware which retrieves KML from Rails and produces KMZ for the client.
|
98
85
|
test_files: []
|