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/CHANGELOG.md +12 -0
- package/mapshaper.js +973 -765
- package/package.json +1 -1
- package/www/mapshaper-gui.js +33 -23
- package/www/mapshaper.js +973 -765
package/package.json
CHANGED
package/www/mapshaper-gui.js
CHANGED
|
@@ -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 =
|
|
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.
|
|
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
|
-
'
|
|
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.
|
|
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 == '
|
|
9242
|
-
elements =
|
|
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
|
|
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 (
|
|
9281
|
-
_svg.reposition(lyr,
|
|
9282
|
-
} else if (
|
|
9283
|
-
_svg.drawLayer(lyr,
|
|
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.
|
|
9336
|
-
type = '
|
|
9337
|
-
} else if (internal.
|
|
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.
|
|
10337
|
+
return frameLyr && internal.getFrameLayerData(frameLyr) || null;
|
|
10328
10338
|
}
|
|
10329
10339
|
|
|
10330
10340
|
function clearAllDisplayArcs() {
|