mapshaper 0.5.111 → 0.5.114

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.5.111",
3
+ "version": "0.5.114",
4
4
  "description": "A tool for editing vector datasets for mapping and GIS.",
5
5
  "keywords": [
6
6
  "shapefile",
@@ -5992,13 +5992,13 @@
5992
5992
  var records = lyr.data.getRecords();
5993
5993
  var symbols = lyr.shapes.map(function(shp, i) {
5994
5994
  var d = records[i];
5995
- var obj = type == 'label' ? internal.svg.importStyledLabel(d) :
5996
- internal.svg.importSymbol(d['svg-symbol']);
5995
+ var obj = internal.svg.renderPoint(d);
5997
5996
  if (!obj || !shp) return null;
5997
+ obj.properties.class = 'mapshaper-svg-symbol';
5998
5998
  obj.properties.transform = getSvgSymbolTransform(shp[0], ext);
5999
5999
  obj.properties['data-id'] = i;
6000
6000
  return obj;
6001
- });
6001
+ }).filter(Boolean);
6002
6002
  var obj = internal.getEmptyLayerForSVG(lyr, {});
6003
6003
  obj.children = symbols;
6004
6004
  return internal.svg.stringify(obj);
@@ -7687,7 +7687,7 @@
7687
7687
 
7688
7688
  // update symbol by re-rendering it
7689
7689
  function updateSymbol2(node, d, id) {
7690
- var o = internal.svg.importStyledLabel(d); // TODO: symbol support
7690
+ var o = internal.svg.renderStyledLabel(d); // TODO: symbol support
7691
7691
  var activeLayer = hit.getHitTarget().layer;
7692
7692
  var xy = activeLayer.shapes[id][0];
7693
7693
  var g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
@@ -8211,13 +8211,16 @@
8211
8211
  var styleIndex = {
8212
8212
  opacity: 'opacity',
8213
8213
  r: 'radius',
8214
- fill: 'fillColor',
8215
- stroke: 'strokeColor',
8214
+ 'fill': 'fillColor',
8216
8215
  'fill-pattern': 'fillPattern',
8216
+ 'fill-opacity': 'fillOpacity',
8217
+ 'stroke': 'strokeColor',
8217
8218
  'stroke-width': 'strokeWidth',
8218
8219
  'stroke-dasharray': 'lineDash',
8219
8220
  'stroke-opacity': 'strokeOpacity',
8220
- 'fill-opacity': 'fillOpacity'
8221
+ 'stroke-linecap': 'lineCap',
8222
+ 'stroke-linejoin': 'lineJoin',
8223
+ 'stroke-miterlimit': 'miterLimit'
8221
8224
  },
8222
8225
  // array of field names of relevant svg display properties
8223
8226
  fields = getCanvasStyleFields(lyr).filter(function(f) {return f in styleIndex;}),
@@ -9057,14 +9060,17 @@
9057
9060
  // (tests on Chrome showed much faster rendering of 1px lines)
9058
9061
  strokeWidth = strokeWidth < 1 ? 1 : strokeWidth * pixRatio;
9059
9062
  }
9060
- ctx.lineCap = 'round';
9061
- ctx.lineJoin = 'round';
9063
+ ctx.lineCap = style.lineCap || 'round';
9064
+ ctx.lineJoin = style.lineJoin || 'round';
9062
9065
  ctx.lineWidth = strokeWidth * lineScale;
9063
9066
  ctx.strokeStyle = style.strokeColor;
9064
9067
  if (style.lineDash){
9065
9068
  ctx.lineCap = 'butt';
9066
9069
  ctx.setLineDash(style.lineDash.split(' '));
9067
9070
  }
9071
+ if (style.miterLimit) {
9072
+ ctx.miterLimit = style.miterLimit;
9073
+ }
9068
9074
  }
9069
9075
 
9070
9076
  if (style.fillPattern) {
@@ -9192,7 +9198,7 @@
9192
9198
  }
9193
9199
  obj.properties.transform = getSvgFurnitureTransform(ext);
9194
9200
  obj.properties.class = 'mapshaper-svg-furniture';
9195
- obj.children = internal.importFurniture(internal.getFurnitureLayerData(lyr), frame);
9201
+ obj.children = internal.importFurniture(internal.getFrameLayerData(lyr), frame);
9196
9202
  return internal.svg.stringify(obj);
9197
9203
  }
9198
9204
 
@@ -9238,12 +9244,14 @@
9238
9244
  function reposition(target, type, ext) {
9239
9245
  var container = el.findChild('.' + target.svg_id).node();
9240
9246
  var elements;
9241
- if (type == 'label' || type == 'symbol') {
9242
- elements = type == 'label' ? container.getElementsByTagName('text') :
9243
- El.findAll('.mapshaper-svg-symbol', container);
9247
+ if (type == 'symbol') {
9248
+ elements = El.findAll('.mapshaper-svg-symbol', container);
9244
9249
  repositionSymbols(elements, target.layer, ext);
9245
9250
  } else if (type == 'furniture') {
9246
9251
  repositionFurniture(container, target.layer, ext);
9252
+ } else {
9253
+ // container.getElementsByTagName('text')
9254
+ error('Unsupported symbol type:', type);
9247
9255
  }
9248
9256
  }
9249
9257
 
@@ -9273,14 +9281,15 @@
9273
9281
  _svg.clear();
9274
9282
  }
9275
9283
  layers.forEach(function(lyr) {
9276
- var svgType = getSvgLayerType(lyr.layer);
9277
- if (!svgType || svgType == 'label') { // svg labels may have canvas dots
9284
+ var isSvgLayer = internal.layerHasSvgSymbols(lyr.layer) || internal.layerHasLabels(lyr.layer);
9285
+ //if (!svgType || svgType == 'label') { // svg labels may have canvas dots
9286
+ if (!isSvgLayer) { // svg labels may have canvas dots
9278
9287
  drawCanvasLayer(lyr, _mainCanv);
9279
9288
  }
9280
- if (svgType && action == 'nav') {
9281
- _svg.reposition(lyr, svgType);
9282
- } else if (svgType) {
9283
- _svg.drawLayer(lyr, svgType);
9289
+ if (isSvgLayer && action == 'nav') {
9290
+ _svg.reposition(lyr, 'symbol');
9291
+ } else if (isSvgLayer) {
9292
+ _svg.drawLayer(lyr, 'symbol');
9284
9293
  }
9285
9294
  });
9286
9295
  };
@@ -9332,9 +9341,9 @@
9332
9341
 
9333
9342
  function getSvgLayerType(layer) {
9334
9343
  var type = null;
9335
- if (internal.layerHasLabels(layer)) {
9336
- type = 'label';
9337
- } else if (internal.layerHasSvgSymbols(layer)) {
9344
+ if (internal.layerHasSvgSymbols(layer)) {
9345
+ type = 'symbol'; // also label + symbol
9346
+ } else if (internal.layerHasLabels(layer)) {
9338
9347
  type = 'symbol';
9339
9348
  }
9340
9349
  return type;
@@ -9953,6 +9962,7 @@
9953
9962
  clearBtn.active(!off);
9954
9963
  if (off) {
9955
9964
  hide();
9965
+ extentNote.hide();
9956
9966
  return;
9957
9967
  }
9958
9968
 
@@ -10324,7 +10334,7 @@
10324
10334
 
10325
10335
  function getFrameData() {
10326
10336
  var frameLyr = internal.findFrameLayer(model);
10327
- return frameLyr && internal.getFurnitureLayerData(frameLyr) || null;
10337
+ return frameLyr && internal.getFrameLayerData(frameLyr) || null;
10328
10338
  }
10329
10339
 
10330
10340
  function clearAllDisplayArcs() {