Merge pull request #1439 from danzel/convert_option
Make Polyline/Polygon not overwrite the source array
This commit is contained in:
commit
9c9d4286a1
@ -52,6 +52,8 @@
|
|||||||
<!-- /layer/vector/ -->
|
<!-- /layer/vector/ -->
|
||||||
<script type="text/javascript" src="suites/layer/vector/CircleSpec.js"></script>
|
<script type="text/javascript" src="suites/layer/vector/CircleSpec.js"></script>
|
||||||
<script type="text/javascript" src="suites/layer/vector/CircleMarkerSpec.js"></script>
|
<script type="text/javascript" src="suites/layer/vector/CircleMarkerSpec.js"></script>
|
||||||
|
<script type="text/javascript" src="suites/layer/vector/PolygonSpec.js"></script>
|
||||||
|
<script type="text/javascript" src="suites/layer/vector/PolylineSpec.js"></script>
|
||||||
<script type="text/javascript" src="suites/layer/vector/PolylineGeometrySpec.js"></script>
|
<script type="text/javascript" src="suites/layer/vector/PolylineGeometrySpec.js"></script>
|
||||||
|
|
||||||
<!-- /map -->
|
<!-- /map -->
|
||||||
|
55
spec/suites/layer/vector/PolygonSpec.js
Normal file
55
spec/suites/layer/vector/PolygonSpec.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
describe('Polygon', function() {
|
||||||
|
|
||||||
|
var c = document.createElement('div');
|
||||||
|
c.style.width = '400px';
|
||||||
|
c.style.height = '400px';
|
||||||
|
var map = new L.Map(c);
|
||||||
|
map.setView(new L.LatLng(55.8, 37.6), 6);
|
||||||
|
|
||||||
|
describe("#initialize", function() {
|
||||||
|
it("doesn't overwrite the given latlng array", function () {
|
||||||
|
var originalLatLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4]
|
||||||
|
];
|
||||||
|
var sourceLatLngs = originalLatLngs.slice();
|
||||||
|
|
||||||
|
var polygon = new L.Polygon(sourceLatLngs);
|
||||||
|
|
||||||
|
expect(sourceLatLngs).toEqual(originalLatLngs);
|
||||||
|
expect(polygon._latlngs).toNotEqual(sourceLatLngs);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#setLatLngs", function () {
|
||||||
|
it("doesn't overwrite the given latlng array", function () {
|
||||||
|
var originalLatLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4]
|
||||||
|
];
|
||||||
|
var sourceLatLngs = originalLatLngs.slice();
|
||||||
|
|
||||||
|
var polygon = new L.Polygon(sourceLatLngs);
|
||||||
|
|
||||||
|
polygon.setLatLngs(sourceLatLngs);
|
||||||
|
|
||||||
|
expect(sourceLatLngs).toEqual(originalLatLngs);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#spliceLatLngs", function () {
|
||||||
|
it("splices the internal latLngs", function () {
|
||||||
|
var latLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4],
|
||||||
|
[5, 6]
|
||||||
|
];
|
||||||
|
|
||||||
|
var polygon = new L.Polygon(latLngs);
|
||||||
|
|
||||||
|
polygon.spliceLatLngs(1, 1, [7, 8]);
|
||||||
|
|
||||||
|
expect(polygon._latlngs).toEqual([L.latLng([1, 2]), L.latLng([7, 8]), L.latLng([5, 6])]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
55
spec/suites/layer/vector/PolylineSpec.js
Normal file
55
spec/suites/layer/vector/PolylineSpec.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
describe('Polyline', function() {
|
||||||
|
|
||||||
|
var c = document.createElement('div');
|
||||||
|
c.style.width = '400px';
|
||||||
|
c.style.height = '400px';
|
||||||
|
var map = new L.Map(c);
|
||||||
|
map.setView(new L.LatLng(55.8, 37.6), 6);
|
||||||
|
|
||||||
|
describe("#initialize", function() {
|
||||||
|
it("doesn't overwrite the given latlng array", function () {
|
||||||
|
var originalLatLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4]
|
||||||
|
];
|
||||||
|
var sourceLatLngs = originalLatLngs.slice();
|
||||||
|
|
||||||
|
var polyline = new L.Polyline(sourceLatLngs);
|
||||||
|
|
||||||
|
expect(sourceLatLngs).toEqual(originalLatLngs);
|
||||||
|
expect(polyline._latlngs).toNotEqual(sourceLatLngs);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#setLatLngs", function () {
|
||||||
|
it("doesn't overwrite the given latlng array", function () {
|
||||||
|
var originalLatLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4]
|
||||||
|
];
|
||||||
|
var sourceLatLngs = originalLatLngs.slice();
|
||||||
|
|
||||||
|
var polyline = new L.Polyline(sourceLatLngs);
|
||||||
|
|
||||||
|
polyline.setLatLngs(sourceLatLngs);
|
||||||
|
|
||||||
|
expect(sourceLatLngs).toEqual(originalLatLngs);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#spliceLatLngs", function () {
|
||||||
|
it("splices the internal latLngs", function () {
|
||||||
|
var latLngs = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4],
|
||||||
|
[5, 6]
|
||||||
|
];
|
||||||
|
|
||||||
|
var polyline = new L.Polyline(latLngs);
|
||||||
|
|
||||||
|
polyline.spliceLatLngs(1, 1, [7, 8]);
|
||||||
|
|
||||||
|
expect(polyline._latlngs).toEqual([L.latLng([1, 2]), L.latLng([7, 8]), L.latLng([5, 6])]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -47,7 +47,7 @@ L.Polyline = L.Path.extend({
|
|||||||
|
|
||||||
spliceLatLngs: function () { // (Number index, Number howMany)
|
spliceLatLngs: function () { // (Number index, Number howMany)
|
||||||
var removed = [].splice.apply(this._latlngs, arguments);
|
var removed = [].splice.apply(this._latlngs, arguments);
|
||||||
this._convertLatLngs(this._latlngs);
|
this._convertLatLngs(this._latlngs, true);
|
||||||
this.redraw();
|
this.redraw();
|
||||||
return removed;
|
return removed;
|
||||||
},
|
},
|
||||||
@ -85,15 +85,16 @@ L.Polyline = L.Path.extend({
|
|||||||
return bounds;
|
return bounds;
|
||||||
},
|
},
|
||||||
|
|
||||||
_convertLatLngs: function (latlngs) {
|
_convertLatLngs: function (latlngs, overwrite) {
|
||||||
var i, len;
|
var i, len, target = overwrite ? latlngs : [];
|
||||||
|
|
||||||
for (i = 0, len = latlngs.length; i < len; i++) {
|
for (i = 0, len = latlngs.length; i < len; i++) {
|
||||||
if (L.Util.isArray(latlngs[i]) && typeof latlngs[i][0] !== 'number') {
|
if (L.Util.isArray(latlngs[i]) && typeof latlngs[i][0] !== 'number') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
latlngs[i] = L.latLng(latlngs[i]);
|
target[i] = L.latLng(latlngs[i]);
|
||||||
}
|
}
|
||||||
return latlngs;
|
return target;
|
||||||
},
|
},
|
||||||
|
|
||||||
_initEvents: function () {
|
_initEvents: function () {
|
||||||
|
Loading…
Reference in New Issue
Block a user