@@ -141,9 +141,9 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
141141 }
142142 } ,
143143
144- buildFeatures : function ( data , format = "application/xml" ) {
144+ buildFeatures : function ( data ) {
145145
146- const parser = ( format === "application/json" ) ? L . OSM . JSONParser : L . OSM . XMLParser ;
146+ const parser = ( data . version ) ? L . OSM . JSONParser : L . OSM . XMLParser ;
147147
148148 var features = parser . getChangesets ( data ) ,
149149 nodes = parser . getNodes ( data ) ,
@@ -322,6 +322,7 @@ L.OSM.XMLParser = {
322322 } ,
323323
324324 getTags : function ( xml ) {
325+
325326 var result = { } ;
326327
327328 var tags = xml . getElementsByTagName ( "tag" ) ;
@@ -337,16 +338,17 @@ L.OSM.JSONParser = {
337338 getChangesets : function ( json ) {
338339 var result = [ ] ;
339340
340- var nodes = json . elements . filter ( d => d . type === "changeset" ) ;
341- for ( var i = 0 ; i < nodes . length ; i ++ ) {
342- var node = nodes [ i ] , id = node [ "id" ] ;
341+ var changesets = json . changeset ? [ json . changeset ] : [ ] ;
342+
343+ for ( var i = 0 ; i < changesets . length ; i ++ ) {
344+ var cs = changesets [ i ] ;
343345 result . push ( {
344- id : id ,
346+ id : cs [ "id" ] . toString ( ) ,
345347 type : "changeset" ,
346348 latLngBounds : L . latLngBounds (
347- [ node [ "min_lat" ] , node [ "min_lon" ] ] ,
348- [ node [ "max_lat" ] , node [ "max_lon" ] ] ) ,
349- tags : this . getTags ( node )
349+ [ cs [ "min_lat" ] , cs [ "min_lon" ] ] ,
350+ [ cs [ "max_lat" ] , cs [ "max_lon" ] ] ) ,
351+ tags : this . getTags ( cs )
350352 } ) ;
351353 }
352354
@@ -356,12 +358,12 @@ L.OSM.JSONParser = {
356358 getNodes : function ( json ) {
357359 var result = { } ;
358360
359- var nodes = json . elements . filter ( d => d . type === "node" ) ;
361+ var nodes = json . elements ? .filter ( d => d . type === "node" ) || [ ] ;
360362 for ( var i = 0 ; i < nodes . length ; i ++ ) {
361363 var node = nodes [ i ] , id = node [ "id" ] ;
362364
363365 result [ id ] = {
364- id : id ,
366+ id : id . toString ( ) ,
365367 type : "node" ,
366368 latLng : L . latLng ( node [ "lat" ] ,
367369 node [ "lon" ] ,
@@ -376,12 +378,12 @@ L.OSM.JSONParser = {
376378 getWays : function ( json , nodes ) {
377379 var result = [ ] ;
378380
379- var ways = json . elements . filter ( d => d . type === "way" ) ;
381+ var ways = json . elements ? .filter ( d => d . type === "way" ) || [ ] ;
380382 for ( var i = 0 ; i < ways . length ; i ++ ) {
381383 var way = ways [ i ] , nds = way . nodes ;
382384
383385 var way_object = {
384- id : way [ "id" ] ,
386+ id : way [ "id" ] . toString ( ) ,
385387 type : "way" ,
386388 nodes : new Array ( nds . length ) ,
387389 tags : this . getTags ( way )
@@ -400,12 +402,12 @@ L.OSM.JSONParser = {
400402 getRelations : function ( json , nodes , ways ) {
401403 var result = [ ] ;
402404
403- var rels = json . elements . filter ( d => d . type === "relation" ) ;
405+ var rels = json . elements ? .filter ( d => d . type === "relation" ) || [ ] ;
404406 for ( var i = 0 ; i < rels . length ; i ++ ) {
405407 var rel = rels [ i ] , members = rel [ "members" ] ;
406408
407409 var rel_object = {
408- id : rel [ "id" ] ,
410+ id : rel [ "id" ] . toString ( ) ,
409411 type : "relation" ,
410412 members : new Array ( members . length ) ,
411413 tags : this . getTags ( rel )
0 commit comments