@@ -453,24 +453,31 @@ export function finishView (view) {
453453 console . warn ( err )
454454 }
455455 } )
456- view . find ( 'div.geo.raw' ) . removeClass ( 'raw' ) . each ( function ( key , value ) {
456+ view . find ( 'div.geo.raw' ) . removeClass ( 'raw' ) . each ( async function ( key , value ) {
457457 const $elem = $ ( value ) . parent ( ) . parent ( )
458458 const $value = $ ( value )
459459 const content = $value . text ( )
460460 try {
461- if ( content . match ( / [ \d \. \, ] + / ) ) {
462- const [ lng , lat , zoom ] = content . split ( ',' ) . map ( parseFloat )
463- const position = [ lat , lng ]
464- $elem . html ( `<div class="geo-map"></div>` )
465- const map = L . map ( $elem . find ( '.geo-map' ) [ 0 ] ) . setView ( position , zoom || 16 )
466-
467- L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' , {
468- attribution : '<a href="https://www.openstreetmap.org/">OSM</a>' ,
469- maxZoom : 18 ,
470- } ) . addTo ( map )
471- L . marker ( position ) . addTo ( map )
472- $elem . addClass ( 'geo' )
461+ let position , zoom
462+ if ( content . match ( / ^ [ \d \. \, \s ] + $ / ) ) {
463+ const [ lng , lat , zoo ] = content . split ( ',' ) . map ( parseFloat )
464+ zoom = zoo
465+ position = [ lat , lng ]
466+ } else {
467+ // parse value as address
468+ const data = await fetch ( `https://nominatim.openstreetmap.org/search?q=${ encodeURIComponent ( content ) } &format=json` ) . then ( r => r . json ( ) )
469+ const { lat, lon } = data [ 0 ]
470+ position = [ lat , lon ]
473471 }
472+ $elem . html ( `<div class="geo-map"></div>` )
473+ const map = L . map ( $elem . find ( '.geo-map' ) [ 0 ] ) . setView ( position , zoom || 16 )
474+
475+ L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' , {
476+ attribution : '<a href="https://www.openstreetmap.org/">OSM</a>' ,
477+ maxZoom : 18 ,
478+ } ) . addTo ( map )
479+ L . marker ( position ) . addTo ( map )
480+ $elem . addClass ( 'geo' )
474481 } catch ( err ) {
475482 $elem . append ( `<div class="alert alert-warning">${ escapeHTML ( err ) } </div>` )
476483 console . warn ( err )
0 commit comments