mapshaper 0.6.48 → 0.6.50

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mapshaper",
3
- "version": "0.6.48",
3
+ "version": "0.6.50",
4
4
  "description": "A tool for editing vector datasets for mapping and GIS.",
5
5
  "keywords": [
6
6
  "shapefile",
@@ -6829,16 +6829,18 @@
6829
6829
  }
6830
6830
 
6831
6831
  function getPointerHitTest(mapLayer, ext, interactionMode) {
6832
- var shapeTest, svgTest, targetLayer;
6832
+ var shapeTest, targetLayer;
6833
6833
  if (!mapLayer || !internal.layerHasGeometry(mapLayer.layer)) {
6834
6834
  return function() {return {ids: []};};
6835
6835
  }
6836
6836
  shapeTest = getShapeHitTest(mapLayer, ext, interactionMode);
6837
- svgTest = getSvgHitTest(mapLayer);
6838
6837
 
6839
6838
  // e: pointer event
6840
6839
  return function(e) {
6841
6840
  var p = ext.translatePixelCoords(e.x, e.y);
6841
+ // update SVG hit test on each test, in case SVG layer has been redrawn
6842
+ // and the symbol container has changed
6843
+ var svgTest = getSvgHitTest(mapLayer);
6842
6844
  var data = shapeTest(p[0], p[1]) || {ids:[]};
6843
6845
  var svgData = svgTest(e); // null or a data object
6844
6846
  if (svgData) { // mouse is over an SVG symbol
@@ -10375,9 +10377,10 @@
10375
10377
  _furniture.css('pointer-events', 'none');
10376
10378
 
10377
10379
  this.drawMainLayers = function(layers, action) {
10380
+ var needSvgRedraw = action != 'nav' && action != 'hover';
10378
10381
  if (skipMainLayerRedraw(action)) return;
10379
10382
  _mainCanv.prep(_ext);
10380
- if (action != 'nav') {
10383
+ if (needSvgRedraw) {
10381
10384
  _svg.clear();
10382
10385
  }
10383
10386
  layers.forEach(function(lyr) {
@@ -10386,7 +10389,7 @@
10386
10389
  if (!isSvgLayer) { // svg labels may have canvas dots
10387
10390
  drawCanvasLayer(lyr, _mainCanv);
10388
10391
  }
10389
- if (isSvgLayer && action == 'nav') {
10392
+ if (isSvgLayer && !needSvgRedraw) {
10390
10393
  _svg.reposition(lyr, 'symbol');
10391
10394
  } else if (isSvgLayer) {
10392
10395
  _svg.drawLayer(lyr, 'symbol');
@@ -11282,9 +11285,10 @@
11282
11285
  } else {
11283
11286
  _overlayLyr = null;
11284
11287
  }
11285
- // 'hover' bypasses style creation in drawLayers2()... sometimes we need that
11286
- // drawLayers('hover');
11287
- drawLayers();
11288
+
11289
+ // 'hover' avoids redrawing all svg symbols when only highlight needs to refresh
11290
+ drawLayers('hover');
11291
+ // drawLayers();
11288
11292
  }
11289
11293
 
11290
11294
  function getDisplayOptions() {
@@ -11486,10 +11490,11 @@
11486
11490
 
11487
11491
  // action:
11488
11492
  // 'nav' map was panned/zoomed -- only map extent has changed
11489
- // 'hover' highlight has changed -- only draw overlay
11493
+ // 'hover' highlight has changed -- only refresh overlay
11490
11494
  // (default) anything could have changed
11491
11495
  function drawLayers2(action) {
11492
- var layersMayHaveChanged = !action;
11496
+ // sometimes styles need to be regenerated with 'hover' action (when)
11497
+ var layersMayHaveChanged = action != 'nav'; // !action;
11493
11498
  var fullBounds;
11494
11499
  var contentLayers = getDrawableContentLayers();
11495
11500
  var furnitureLayers = getDrawableFurnitureLayers();