@@ -33,6 +33,10 @@ export default class Map {
33
33
TREE_SELECTED : 'tree-selected' ,
34
34
TREE_UNSELECTED : 'tree-unselected' ,
35
35
MOVE_END : 'move-end' ,
36
+ LOAD : 'load' ,
37
+ TREE_CLICKED : 'tree-clicked' ,
38
+ FIND_NEAREST : 'find-nearest' ,
39
+ ERROR : 'error' ,
36
40
}
37
41
38
42
constructor ( options ) {
@@ -70,6 +74,19 @@ export default class Map {
70
74
this . _mountDomElement = null
71
75
72
76
log . warn ( 'map core version:' , require ( '../package.json' ) . version )
77
+
78
+ // Deprecation warnings
79
+ let deprecatedMethods = [
80
+ 'onLoad' ,
81
+ 'onClickTree' ,
82
+ 'onFindNearestAt' ,
83
+ 'onError' ,
84
+ ]
85
+ deprecatedMethods . forEach ( ( method ) => {
86
+ if ( this [ method ] ) {
87
+ log . warn ( `${ method } is deprecated. Use map.on() instead.` )
88
+ }
89
+ } )
73
90
}
74
91
75
92
/** *************************** static *************************** */
@@ -517,6 +534,10 @@ export default class Map {
517
534
this . _selectMarker ( data )
518
535
if ( this . onClickTree ) {
519
536
this . onClickTree ( data )
537
+ } else if (
538
+ this . events . listenerCount ( Map . REGISTERED_EVENTS . TREE_CLICKED ) > 0
539
+ ) {
540
+ this . events . emit ( Map . REGISTERED_EVENTS . TREE_CLICKED , data )
520
541
}
521
542
} else if ( data . type === 'cluster' ) {
522
543
if ( data . zoom_to ) {
@@ -1306,6 +1327,8 @@ export default class Map {
1306
1327
// fire load event
1307
1328
if ( this . onLoad ) {
1308
1329
this . onLoad ( )
1330
+ } else if ( this . events . listenerCount ( Map . REGISTERED_EVENTS . LOAD ) > 0 ) {
1331
+ this . events . emit ( Map . REGISTERED_EVENTS . LOAD )
1309
1332
}
1310
1333
1311
1334
if ( this . debug ) {
@@ -1317,16 +1340,61 @@ export default class Map {
1317
1340
log . error ( 'map error:' , e )
1318
1341
if ( this . onError ) {
1319
1342
this . onError ( e )
1343
+ } else if ( this . events . listenerCount ( Map . REGISTERED_EVENTS . ERROR ) > 0 ) {
1344
+ this . events . emit ( Map . REGISTERED_EVENTS . ERROR , e )
1320
1345
}
1321
1346
}
1322
1347
}
1323
1348
}
1324
1349
1325
1350
on ( eventName , handler ) {
1326
- //TODO check event name enum
1351
+ const isValidEvent = Object . values ( Map . REGISTERED_EVENTS ) . includes (
1352
+ eventName ,
1353
+ )
1354
+ if ( ! isValidEvent ) {
1355
+ log . error ( 'Invalid event name:' , eventName )
1356
+ return
1357
+ }
1358
+
1327
1359
if ( handler ) {
1328
1360
log . info ( 'register event:' , eventName )
1329
1361
this . events . on ( eventName , handler )
1362
+ } else {
1363
+ log . error ( 'No handler provided for event:' , eventName )
1364
+ }
1365
+ }
1366
+
1367
+ off ( eventName , handler ) {
1368
+ const isValidEvent = Object . values ( Map . REGISTERED_EVENTS ) . includes (
1369
+ eventName ,
1370
+ )
1371
+ if ( ! isValidEvent ) {
1372
+ log . error ( 'Invalid event name:' , eventName )
1373
+ return
1374
+ }
1375
+
1376
+ if ( handler ) {
1377
+ log . info ( 'remove event:' , eventName )
1378
+ this . events . off ( eventName , handler )
1379
+ } else {
1380
+ log . error ( 'No handler provided for event removal:' , eventName )
1381
+ }
1382
+ }
1383
+
1384
+ once ( eventName , handler ) {
1385
+ const isValidEvent = Object . values ( Map . REGISTERED_EVENTS ) . includes (
1386
+ eventName ,
1387
+ )
1388
+ if ( ! isValidEvent ) {
1389
+ log . error ( 'Invalid event name:' , eventName )
1390
+ return
1391
+ }
1392
+
1393
+ if ( handler ) {
1394
+ log . info ( 'register one-time event:' , eventName )
1395
+ this . events . once ( eventName , handler )
1396
+ } else {
1397
+ log . error ( 'No handler provided for this one-time event:' , eventName )
1330
1398
}
1331
1399
}
1332
1400
0 commit comments