@@ -232,101 +232,74 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
232232} ) ;
233233
234234L . OSM . XMLParser = {
235- getChangesets : function ( xml ) {
236- var result = [ ] ;
237-
238- var nodes = xml . getElementsByTagName ( "changeset" ) ;
239- for ( var i = 0 ; i < nodes . length ; i ++ ) {
240- var node = nodes [ i ] , id = node . getAttribute ( "id" ) ;
241- result . push ( {
242- id : id ,
243- type : "changeset" ,
244- latLngBounds : L . latLngBounds (
245- [ node . getAttribute ( "min_lat" ) , node . getAttribute ( "min_lon" ) ] ,
246- [ node . getAttribute ( "max_lat" ) , node . getAttribute ( "max_lon" ) ] ) ,
247- tags : this . getTags ( node )
248- } ) ;
249- }
250-
251- return result ;
235+ getChangesets ( xml ) {
236+ const changesets = [ ...xml . getElementsByTagName ( "changeset" ) ] ;
237+ return changesets . map ( cs => ( {
238+ id : String ( cs . getAttribute ( "id" ) ) ,
239+ type : "changeset" ,
240+ latLngBounds : L . latLngBounds (
241+ [ cs . getAttribute ( "min_lat" ) , cs . getAttribute ( "min_lon" ) ] ,
242+ [ cs . getAttribute ( "max_lat" ) , cs . getAttribute ( "max_lon" ) ]
243+ ) ,
244+ tags : this . getTags ( cs )
245+ } ) ) ;
252246 } ,
253247
254- getNodes : function ( xml ) {
255- var result = { } ;
248+ getNodes ( xml ) {
249+ const result = { } ;
250+ const nodes = [ ...xml . getElementsByTagName ( "node" ) ] ;
256251
257- var nodes = xml . getElementsByTagName ( "node" ) ;
258- for ( var i = 0 ; i < nodes . length ; i ++ ) {
259- var node = nodes [ i ] , id = node . getAttribute ( "id" ) ;
252+ for ( const node of nodes ) {
253+ const id = node . getAttribute ( "id" ) ;
260254 result [ id ] = {
261- id : id ,
255+ id : String ( id ) ,
262256 type : "node" ,
263- latLng : L . latLng ( node . getAttribute ( "lat" ) ,
264- node . getAttribute ( "lon" ) ,
265- true ) ,
257+ latLng : L . latLng (
258+ node . getAttribute ( "lat" ) ,
259+ node . getAttribute ( "lon" ) ,
260+ true
261+ ) ,
266262 tags : this . getTags ( node )
267263 } ;
268264 }
269265
270266 return result ;
271267 } ,
272268
273- getWays : function ( xml , nodes ) {
274- var result = [ ] ;
275-
276- var ways = xml . getElementsByTagName ( "way" ) ;
277- for ( var i = 0 ; i < ways . length ; i ++ ) {
278- var way = ways [ i ] , nds = way . getElementsByTagName ( "nd" ) ;
279-
280- var way_object = {
281- id : way . getAttribute ( "id" ) ,
269+ getWays ( xml , nodes ) {
270+ const ways = [ ...xml . getElementsByTagName ( "way" ) ] ;
271+ return ways . map ( way => {
272+ const nds = [ ...way . getElementsByTagName ( "nd" ) ] ;
273+ return {
274+ id : String ( way . getAttribute ( "id" ) ) ,
282275 type : "way" ,
283- nodes : new Array ( nds . length ) ,
276+ nodes : nds . map ( nd => nodes [ nd . getAttribute ( "ref" ) ] ) ,
284277 tags : this . getTags ( way )
285278 } ;
286-
287- for ( var j = 0 ; j < nds . length ; j ++ ) {
288- way_object . nodes [ j ] = nodes [ nds [ j ] . getAttribute ( "ref" ) ] ;
289- }
290-
291- result . push ( way_object ) ;
292- }
293-
294- return result ;
279+ } ) ;
295280 } ,
296281
297- getRelations : function ( xml , nodes , ways ) {
298- var result = [ ] ;
299-
300- var rels = xml . getElementsByTagName ( "relation" ) ;
301- for ( var i = 0 ; i < rels . length ; i ++ ) {
302- var rel = rels [ i ] , members = rel . getElementsByTagName ( "member" ) ;
303-
304- var rel_object = {
305- id : rel . getAttribute ( "id" ) ,
282+ getRelations ( xml , nodes , ways ) {
283+ const rels = [ ...xml . getElementsByTagName ( "relation" ) ] ;
284+ return rels . map ( rel => {
285+ const members = [ ...rel . getElementsByTagName ( "member" ) ] ;
286+ return {
287+ id : String ( rel . getAttribute ( "id" ) ) ,
306288 type : "relation" ,
307- members : new Array ( members . length ) ,
289+ members : members // relation-way and relation-relation membership not implemented
290+ . map ( member => member . getAttribute ( "type" ) === "node" ? nodes [ member . getAttribute ( "ref" ) ] : null )
291+ . filter ( Boolean ) , // filter out null and undefined
308292 tags : this . getTags ( rel )
309293 } ;
310-
311- for ( var j = 0 ; j < members . length ; j ++ ) {
312- if ( members [ j ] . getAttribute ( "type" ) === "node" )
313- rel_object . members [ j ] = nodes [ members [ j ] . getAttribute ( "ref" ) ] ;
314- else // relation-way and relation-relation membership not implemented
315- rel_object . members [ j ] = null ;
316- }
317- rel_object . members = rel_object . members . filter ( i => i !== null && i !== undefined )
318- result . push ( rel_object ) ;
319- }
320-
321- return result ;
294+ } ) ;
322295 } ,
323296
324- getTags : function ( xml ) {
325- var result = { } ;
297+ getTags ( xml ) {
298+ const result = { } ;
299+ const tags = [ ...xml . getElementsByTagName ( "tag" ) ] ;
326300
327- var tags = xml . getElementsByTagName ( "tag" ) ;
328- for ( var j = 0 ; j < tags . length ; j ++ ) {
329- result [ tags [ j ] . getAttribute ( "k" ) ] = tags [ j ] . getAttribute ( "v" ) ;
301+ for ( const tag of tags ) {
302+ result [ tag . getAttribute ( "k" ) ] = tag . getAttribute ( "v" ) ;
330303 }
331304
332305 return result ;
0 commit comments