@@ -209,10 +209,22 @@ export default class IconLayer extends Layer {
209209
210210 if ( Window . fetch && this . svgIconUrl ) {
211211 Window . fetch ( this . svgIconUrl , fetchConfig )
212- . then ( response => response . json ( ) )
212+ . then ( response => {
213+ if ( ! response . ok ) {
214+ throw new Error ( `Failed to load svg-icons.json: ${ response . status } ` ) ;
215+ }
216+ return response . json ( ) ;
217+ } )
213218 . then ( ( parsed : { svgIcons ?: any [ ] } = { } ) => {
214219 this . setSvgIcons ( parsed . svgIcons ) ;
220+ } )
221+ . catch ( ( ) => {
222+ // Fallback to empty geometry to allow default icon rendering
223+ this . iconGeometry = { } ;
215224 } ) ;
225+ } else {
226+ // No fetch available; set empty geometry so layer can render default icons
227+ this . iconGeometry = { } ;
216228 }
217229 }
218230
@@ -389,42 +401,40 @@ export default class IconLayer extends Layer {
389401 cullFace : GL . FRONT
390402 } ;
391403
392- return ! this . iconGeometry
393- ? [ ]
394- : [
395- new SvgIconLayer ( {
396- ...defaultLayerProps ,
397- ...brushingProps ,
398- ...layerProps ,
399- ...data ,
400- parameters,
401- getIconGeometry : id => this . iconGeometry ?. [ id ] ,
402-
403- // update triggers
404- updateTriggers,
405- extensions
406- } ) ,
407-
408- // hover layer
409- ...( hoveredObject
410- ? [
411- // @ts -expect-error SvgIconLayerProps needs getIcon Field
412- new SvgIconLayer ( {
413- ...this . getDefaultHoverLayerProps ( ) ,
414- ...layerProps ,
415- visible : defaultLayerProps . visible ,
416- data : [ hoveredObject ] ,
417- parameters,
418- getPosition : data . getPosition ,
419- getRadius : data . getRadius ,
420- getFillColor : this . config . highlightColor ,
421- getIconGeometry : id => this . iconGeometry ?. [ id ]
422- } )
423- ]
424- : [ ] ) ,
425-
426- // text label layer
427- ...labelLayers
428- ] ;
404+ return [
405+ new SvgIconLayer ( {
406+ ...defaultLayerProps ,
407+ ...brushingProps ,
408+ ...layerProps ,
409+ ...data ,
410+ parameters,
411+ getIconGeometry : id => this . iconGeometry ?. [ id ] ,
412+
413+ // update triggers
414+ updateTriggers,
415+ extensions
416+ } ) ,
417+
418+ // hover layer
419+ ...( hoveredObject
420+ ? [
421+ // @ts -expect-error SvgIconLayerProps needs getIcon Field
422+ new SvgIconLayer ( {
423+ ...this . getDefaultHoverLayerProps ( ) ,
424+ ...layerProps ,
425+ visible : defaultLayerProps . visible ,
426+ data : [ hoveredObject ] ,
427+ parameters,
428+ getPosition : data . getPosition ,
429+ getRadius : data . getRadius ,
430+ getFillColor : this . config . highlightColor ,
431+ getIconGeometry : id => this . iconGeometry ?. [ id ]
432+ } )
433+ ]
434+ : [ ] ) ,
435+
436+ // text label layer
437+ ...labelLayers
438+ ] ;
429439 }
430440}
0 commit comments