draw-tools: convert circles to geodesic mode, to match everything else
perhaps could be a bit cleaner, but it'll do for now...
This commit is contained in:
parent
51b24386e6
commit
c3b6461d47
54
external/leaflet.draw.js
vendored
54
external/leaflet.draw.js
vendored
@ -822,7 +822,7 @@ L.Draw.Circle = L.Draw.SimpleShape.extend({
|
|||||||
|
|
||||||
_drawShape: function (latlng) {
|
_drawShape: function (latlng) {
|
||||||
if (!this._shape) {
|
if (!this._shape) {
|
||||||
this._shape = new L.Circle(this._startLatLng, this._startLatLng.distanceTo(latlng), this.options.shapeOptions);
|
this._shape = new L.GeodesicCircle(this._startLatLng, this._startLatLng.distanceTo(latlng), this.options.shapeOptions);
|
||||||
this._map.addLayer(this._shape);
|
this._map.addLayer(this._shape);
|
||||||
} else {
|
} else {
|
||||||
this._shape.setRadius(this._startLatLng.distanceTo(latlng));
|
this._shape.setRadius(this._startLatLng.distanceTo(latlng));
|
||||||
@ -830,7 +830,7 @@ L.Draw.Circle = L.Draw.SimpleShape.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_fireCreatedEvent: function () {
|
_fireCreatedEvent: function () {
|
||||||
var circle = new L.Circle(this._startLatLng, this._shape.getRadius(), this.options.shapeOptions);
|
var circle = new L.GeodesicCircle(this._startLatLng, this._shape.getRadius(), this.options.shapeOptions);
|
||||||
L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, circle);
|
L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, circle);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1502,10 +1502,8 @@ L.Edit.Circle = L.Edit.SimpleShape.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getResizeMarkerPoint: function (latlng) {
|
_getResizeMarkerPoint: function (latlng) {
|
||||||
// From L.shape.getBounds()
|
var latRadius = (this._shape.getRadius() / 40075017) * 360;
|
||||||
var delta = this._shape._radius * Math.cos(Math.PI / 4),
|
return L.latLng(latlng.lat+latRadius,latlng.lng);
|
||||||
point = this._map.project(latlng);
|
|
||||||
return this._map.unproject([point.x + delta, point.y - delta]);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_move: function (latlng) {
|
_move: function (latlng) {
|
||||||
@ -1548,6 +1546,28 @@ L.Circle.addInitHook(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
L.GeodesicCircle.addInitHook(function () {
|
||||||
|
if (L.Edit.Circle) {
|
||||||
|
this.editing = new L.Edit.Circle(this);
|
||||||
|
|
||||||
|
if (this.options.editable) {
|
||||||
|
this.editing.enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.on('add', function () {
|
||||||
|
if (this.editing && this.editing.enabled()) {
|
||||||
|
this.editing.addHooks();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.on('remove', function () {
|
||||||
|
if (this.editing && this.editing.enabled()) {
|
||||||
|
this.editing.removeHooks();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* L.LatLngUtil contains different utility functions for LatLngs.
|
* L.LatLngUtil contains different utility functions for LatLngs.
|
||||||
*/
|
*/
|
||||||
@ -2432,16 +2452,16 @@ L.EditToolbar.Edit = L.Handler.extend({
|
|||||||
var id = L.Util.stamp(layer);
|
var id = L.Util.stamp(layer);
|
||||||
|
|
||||||
if (!this._uneditedLayerProps[id]) {
|
if (!this._uneditedLayerProps[id]) {
|
||||||
// Polyline, Polygon or Rectangle
|
if (layer instanceof L.GeodesicCircle || layer instanceof L.Circle) {
|
||||||
if (layer instanceof L.GeodesicPolyline || layer instanceof L.GeodesicPolygon || layer instanceof L.Rectangle) {
|
|
||||||
this._uneditedLayerProps[id] = {
|
|
||||||
latlngs: L.LatLngUtil.cloneLatLngs(layer.getLatLngs())
|
|
||||||
};
|
|
||||||
} else if (layer instanceof L.Circle) {
|
|
||||||
this._uneditedLayerProps[id] = {
|
this._uneditedLayerProps[id] = {
|
||||||
latlng: L.LatLngUtil.cloneLatLng(layer.getLatLng()),
|
latlng: L.LatLngUtil.cloneLatLng(layer.getLatLng()),
|
||||||
radius: layer.getRadius()
|
radius: layer.getRadius()
|
||||||
};
|
};
|
||||||
|
} else if (layer instanceof L.GeodesicPolyline || layer instanceof L.GeodesicPolygon || layer instanceof L.Rectangle) {
|
||||||
|
// Polyline, Polygon or Rectangle
|
||||||
|
this._uneditedLayerProps[id] = {
|
||||||
|
latlngs: L.LatLngUtil.cloneLatLngs(layer.getLatLngs())
|
||||||
|
};
|
||||||
} else { // Marker
|
} else { // Marker
|
||||||
this._uneditedLayerProps[id] = {
|
this._uneditedLayerProps[id] = {
|
||||||
latlng: L.LatLngUtil.cloneLatLng(layer.getLatLng())
|
latlng: L.LatLngUtil.cloneLatLng(layer.getLatLng())
|
||||||
@ -2454,12 +2474,12 @@ L.EditToolbar.Edit = L.Handler.extend({
|
|||||||
var id = L.Util.stamp(layer);
|
var id = L.Util.stamp(layer);
|
||||||
layer.edited = false;
|
layer.edited = false;
|
||||||
if (this._uneditedLayerProps.hasOwnProperty(id)) {
|
if (this._uneditedLayerProps.hasOwnProperty(id)) {
|
||||||
// Polyline, Polygon or Rectangle
|
if (layer instanceof L.GeodesicCircle || layer instanceof L.Circle) {
|
||||||
if (layer instanceof L.GeodesicPolyline || layer instanceof L.GeodesicPolygon || layer instanceof L.Rectangle) {
|
|
||||||
layer.setLatLngs(this._uneditedLayerProps[id].latlngs);
|
|
||||||
} else if (layer instanceof L.Circle) {
|
|
||||||
layer.setLatLng(this._uneditedLayerProps[id].latlng);
|
layer.setLatLng(this._uneditedLayerProps[id].latlng);
|
||||||
layer.setRadius(this._uneditedLayerProps[id].radius);
|
layer.setRadius(this._uneditedLayerProps[id].radius);
|
||||||
|
} else if (layer instanceof L.GeodesicPolyline || layer instanceof L.GeodesicPolygon || layer instanceof L.Rectangle) {
|
||||||
|
// Polyline, Polygon or Rectangle
|
||||||
|
layer.setLatLngs(this._uneditedLayerProps[id].latlngs);
|
||||||
} else { // Marker
|
} else { // Marker
|
||||||
layer.setLatLng(this._uneditedLayerProps[id].latlng);
|
layer.setLatLng(this._uneditedLayerProps[id].latlng);
|
||||||
}
|
}
|
||||||
@ -2522,7 +2542,7 @@ L.EditToolbar.Edit = L.Handler.extend({
|
|||||||
layer.options.previousOptions = layer.options;
|
layer.options.previousOptions = layer.options;
|
||||||
|
|
||||||
// Make sure that Polylines are not filled
|
// Make sure that Polylines are not filled
|
||||||
if (!(layer instanceof L.Circle) && !(layer instanceof L.GeodesicPolygon) && !(layer instanceof L.Rectangle)) {
|
if (!(layer instanceof L.Circle) && !(layer instanceof L.GeodrsicCircle) && !(layer instanceof L.GeodesicPolygon) && !(layer instanceof L.Rectangle)) {
|
||||||
pathOptions.fill = false;
|
pathOptions.fill = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// @id iitc-plugin-draw-tools@breunigs
|
// @id iitc-plugin-draw-tools@breunigs
|
||||||
// @name IITC plugin: draw tools
|
// @name IITC plugin: draw tools
|
||||||
// @category Layer
|
// @category Layer
|
||||||
// @version 0.5.1.@@DATETIMEVERSION@@
|
// @version 0.5.2.@@DATETIMEVERSION@@
|
||||||
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
||||||
// @updateURL @@UPDATEURL@@
|
// @updateURL @@UPDATEURL@@
|
||||||
// @downloadURL @@DOWNLOADURL@@
|
// @downloadURL @@DOWNLOADURL@@
|
||||||
@ -197,7 +197,7 @@ window.plugin.drawTools.load = function() {
|
|||||||
layer = L.geodesicPolygon(item.latLngs,window.plugin.drawTools.polygonOptions);
|
layer = L.geodesicPolygon(item.latLngs,window.plugin.drawTools.polygonOptions);
|
||||||
break;
|
break;
|
||||||
case 'circle':
|
case 'circle':
|
||||||
layer = L.circle(item.latLng,item.radius,window.plugin.drawTools.polygonOptions);
|
layer = L.geodesicCircle(item.latLng,item.radius,window.plugin.drawTools.polygonOptions);
|
||||||
break;
|
break;
|
||||||
case 'marker':
|
case 'marker':
|
||||||
layer = L.marker(item.latLng,window.plugin.drawTools.markerOptions)
|
layer = L.marker(item.latLng,window.plugin.drawTools.markerOptions)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user