map-ol-utils 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -426,6 +426,37 @@ var buildMassMarksStyles = (getImgUrlFn) => {
426
426
  return massMarksStyles;
427
427
  };
428
428
  };
429
+ var selectEventHandle = (vectorLayer, feature) => {
430
+ const data = feature.getProperties();
431
+ const { activeStyle } = data;
432
+ feature.setStyle(activeStyle);
433
+ emitter_default.emit("selected-feature", data);
434
+ vectorLayer.set("_hasActive", true);
435
+ if (vectorLayer.get("_isDynamic")) {
436
+ const activeImage = activeStyle.getImage();
437
+ setTimeout(() => {
438
+ emitter_default.emit(
439
+ "dynamic-marker",
440
+ Object.assign({}, data.rawData || {}, {
441
+ lnglat: data.lnglat,
442
+ style: data.style,
443
+ crsForm: data.crsForm,
444
+ width: activeImage.getWidth(),
445
+ height: activeImage.getHeight()
446
+ })
447
+ );
448
+ }, 1e3);
449
+ }
450
+ const isAutoFit = vectorLayer.get("_isAutoFit");
451
+ if (isAutoFit) {
452
+ const view = instance.getView();
453
+ view.animate({
454
+ duration: 1e3,
455
+ zoom: view.getZoom(),
456
+ center: (0, import_extent.getCenter)(feature.getGeometry().getExtent())
457
+ });
458
+ }
459
+ };
429
460
  var createSelectByLayer = (vectorLayer) => {
430
461
  const interaction = new import_interaction.Select({
431
462
  style: null,
@@ -447,37 +478,21 @@ var createSelectByLayer = (vectorLayer) => {
447
478
  }
448
479
  });
449
480
  interaction.on("select", (evt) => {
481
+ const isClusterLayer = vectorLayer.get("_isClusterLayer");
450
482
  const { selected, deselected } = evt;
451
483
  if (selected.length) {
452
484
  const feature = selected[0];
453
- const data = feature.getProperties();
454
- const { activeStyle } = data;
455
- feature.setStyle(activeStyle);
456
- emitter_default.emit("selected-feature", data);
457
- vectorLayer.set("_hasActive", true);
458
- if (vectorLayer.get("_isDynamic")) {
459
- const activeImage = activeStyle.getImage();
460
- setTimeout(() => {
461
- emitter_default.emit(
462
- "dynamic-marker",
463
- Object.assign({}, data.rawData || {}, {
464
- lnglat: data.lnglat,
465
- style: data.style,
466
- crsForm: data.crsForm,
467
- width: activeImage.getWidth(),
468
- height: activeImage.getHeight()
469
- })
470
- );
471
- }, 1e3);
472
- }
473
- const isAutoFit = vectorLayer.get("_isAutoFit");
474
- if (isAutoFit) {
475
- const view = instance.getView();
476
- view.animate({
477
- duration: 1e3,
478
- zoom: view.getZoom(),
479
- center: (0, import_extent.getCenter)(feature.getGeometry().getExtent())
480
- });
485
+ if (isClusterLayer) {
486
+ const features = feature.get("features");
487
+ if (features.length === 1) {
488
+ const cluterFeature = features[0];
489
+ const data = cluterFeature.getProperties();
490
+ const { activeStyle } = data;
491
+ feature.setStyle(activeStyle);
492
+ selectEventHandle(vectorLayer, cluterFeature);
493
+ }
494
+ } else {
495
+ selectEventHandle(vectorLayer, feature);
481
496
  }
482
497
  }
483
498
  if (deselected.length) {
@@ -691,7 +706,8 @@ var createClusterLayer = (dataList, config) => {
691
706
  });
692
707
  vectorLayer.setProperties({
693
708
  _isCustom: true,
694
- _isVectorLayer: true
709
+ _isVectorLayer: true,
710
+ _isClusterLayer: true
695
711
  });
696
712
  if (openClick) {
697
713
  createSelectByLayer(vectorLayer);
package/dist/index.js CHANGED
@@ -359,6 +359,37 @@ var buildMassMarksStyles = (getImgUrlFn) => {
359
359
  return massMarksStyles;
360
360
  };
361
361
  };
362
+ var selectEventHandle = (vectorLayer, feature) => {
363
+ const data = feature.getProperties();
364
+ const { activeStyle } = data;
365
+ feature.setStyle(activeStyle);
366
+ emitter_default.emit("selected-feature", data);
367
+ vectorLayer.set("_hasActive", true);
368
+ if (vectorLayer.get("_isDynamic")) {
369
+ const activeImage = activeStyle.getImage();
370
+ setTimeout(() => {
371
+ emitter_default.emit(
372
+ "dynamic-marker",
373
+ Object.assign({}, data.rawData || {}, {
374
+ lnglat: data.lnglat,
375
+ style: data.style,
376
+ crsForm: data.crsForm,
377
+ width: activeImage.getWidth(),
378
+ height: activeImage.getHeight()
379
+ })
380
+ );
381
+ }, 1e3);
382
+ }
383
+ const isAutoFit = vectorLayer.get("_isAutoFit");
384
+ if (isAutoFit) {
385
+ const view = instance.getView();
386
+ view.animate({
387
+ duration: 1e3,
388
+ zoom: view.getZoom(),
389
+ center: getCenter(feature.getGeometry().getExtent())
390
+ });
391
+ }
392
+ };
362
393
  var createSelectByLayer = (vectorLayer) => {
363
394
  const interaction = new Select({
364
395
  style: null,
@@ -380,37 +411,21 @@ var createSelectByLayer = (vectorLayer) => {
380
411
  }
381
412
  });
382
413
  interaction.on("select", (evt) => {
414
+ const isClusterLayer = vectorLayer.get("_isClusterLayer");
383
415
  const { selected, deselected } = evt;
384
416
  if (selected.length) {
385
417
  const feature = selected[0];
386
- const data = feature.getProperties();
387
- const { activeStyle } = data;
388
- feature.setStyle(activeStyle);
389
- emitter_default.emit("selected-feature", data);
390
- vectorLayer.set("_hasActive", true);
391
- if (vectorLayer.get("_isDynamic")) {
392
- const activeImage = activeStyle.getImage();
393
- setTimeout(() => {
394
- emitter_default.emit(
395
- "dynamic-marker",
396
- Object.assign({}, data.rawData || {}, {
397
- lnglat: data.lnglat,
398
- style: data.style,
399
- crsForm: data.crsForm,
400
- width: activeImage.getWidth(),
401
- height: activeImage.getHeight()
402
- })
403
- );
404
- }, 1e3);
405
- }
406
- const isAutoFit = vectorLayer.get("_isAutoFit");
407
- if (isAutoFit) {
408
- const view = instance.getView();
409
- view.animate({
410
- duration: 1e3,
411
- zoom: view.getZoom(),
412
- center: getCenter(feature.getGeometry().getExtent())
413
- });
418
+ if (isClusterLayer) {
419
+ const features = feature.get("features");
420
+ if (features.length === 1) {
421
+ const cluterFeature = features[0];
422
+ const data = cluterFeature.getProperties();
423
+ const { activeStyle } = data;
424
+ feature.setStyle(activeStyle);
425
+ selectEventHandle(vectorLayer, cluterFeature);
426
+ }
427
+ } else {
428
+ selectEventHandle(vectorLayer, feature);
414
429
  }
415
430
  }
416
431
  if (deselected.length) {
@@ -624,7 +639,8 @@ var createClusterLayer = (dataList, config) => {
624
639
  });
625
640
  vectorLayer.setProperties({
626
641
  _isCustom: true,
627
- _isVectorLayer: true
642
+ _isVectorLayer: true,
643
+ _isClusterLayer: true
628
644
  });
629
645
  if (openClick) {
630
646
  createSelectByLayer(vectorLayer);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-ol-utils",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "type": "module",
5
5
  "description": "Openlayers utils library",
6
6
  "files": [