Fixed some deleting issues
This commit is contained in:
parent
eceb85569e
commit
dc3c402223
@ -108,7 +108,7 @@ export class MapService {
|
|||||||
newCircle(c: Circle) {
|
newCircle(c: Circle) {
|
||||||
let circle = L.circle(c.latlng, Object.assign({color: '#ff4141'}, c)).addTo(this.map);
|
let circle = L.circle(c.latlng, Object.assign({color: '#ff4141'}, c)).addTo(this.map);
|
||||||
if(c.label) circle.bindTooltip(c.label, {permanent: true, direction: 'center'});
|
if(c.label) circle.bindTooltip(c.label, {permanent: true, direction: 'center'});
|
||||||
if(!c.noClick) circle.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: c, item: circle}));
|
circle.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: c, item: circle}));
|
||||||
if(!c.noDelete) this.circles.push(circle);
|
if(!c.noDelete) this.circles.push(circle);
|
||||||
return circle;
|
return circle;
|
||||||
}
|
}
|
||||||
@ -116,36 +116,30 @@ export class MapService {
|
|||||||
newMarker(m: Marker) {
|
newMarker(m: Marker) {
|
||||||
let marker = L.marker(m.latlng, Object.assign({color: '#ff4141'}, m, {icon: m.icon ? this.getIcon(m.icon) : MARKER})).addTo(this.map);
|
let marker = L.marker(m.latlng, Object.assign({color: '#ff4141'}, m, {icon: m.icon ? this.getIcon(m.icon) : MARKER})).addTo(this.map);
|
||||||
if(m.label) marker.bindTooltip(m.label, {permanent: true, direction: 'bottom'});
|
if(m.label) marker.bindTooltip(m.label, {permanent: true, direction: 'bottom'});
|
||||||
if(!m.noClick) marker.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: m, item: marker}));
|
marker.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: m, item: marker}));
|
||||||
if(!m.noDelete) this.markers.push(marker);
|
if(!m.noDelete) this.markers.push(marker);
|
||||||
return marker;
|
return marker;
|
||||||
}
|
}
|
||||||
|
|
||||||
newMeasurement(m: Measurement) {
|
newMeasurement(m: Measurement) {
|
||||||
let line = L.polyline([m.latlng, m.latlng2], Object.assign({color: '#ff4141', weight: 8}, m));
|
let line = L.polyline([m.latlng, m.latlng2], Object.assign({color: '#ff4141', weight: 8, lineCap: "square", dashArray: '10, 20'}, m)).addTo(this.map);
|
||||||
let decoration = L.polylineDecorator(line, {patterns: [
|
if(!m.noDelete) this.measurements.push(line);
|
||||||
{offset: '100%', repeat: 0, symbol: L.Symbol.arrowHead({pixelSize: 10, polygon: false, headAngle: 180, pathOptions: Object.assign({color: '#ff4141', weight: 8}, m)})},
|
|
||||||
{offset: '-100%', repeat: 0, symbol: L.Symbol.arrowHead({pixelSize: 10, polygon: false, headAngle: 180, pathOptions: Object.assign({color: '#ff4141', weight: 8}, m)})}
|
|
||||||
]});
|
|
||||||
let group = new L.LayerGroup([line, decoration]).addTo(this.map);
|
|
||||||
if(!m.noDelete) this.measurements.push(group);
|
|
||||||
|
|
||||||
let distance = latLngDistance(m.latlng, m.latlng2);
|
let distance = latLngDistance(m.latlng, m.latlng2);
|
||||||
line.bindPopup(`${distance > 1000 ? Math.round(distance / 100) / 10 : Math.round(distance)} ${distance > 1000 ? 'k' : ''}m`, {autoClose: false, closeOnClick: false}).openPopup();
|
line.bindPopup(`${distance > 1000 ? Math.round(distance / 100) / 10 : Math.round(distance)} ${distance > 1000 ? 'k' : ''}m`, {autoClose: false, closeOnClick: false}).openPopup();
|
||||||
if(m.noClick) line.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: m, item: group}));
|
line.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: m, item: line}));
|
||||||
return group;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
newPolygon(p: Polygon) {
|
newPolygon(p: Polygon) {
|
||||||
let polygon = new L.Polygon(p.latlng, Object.assign({color: '#ff4141'}, p)).addTo(this.map);
|
let polygon = new L.Polygon(p.latlng, Object.assign({color: '#ff4141'}, p)).addTo(this.map);
|
||||||
if(!p.noClick) polygon.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: p, item: polygon}));
|
polygon.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: p, item: polygon}));
|
||||||
if(!p.noDelete) this.polygons.push(polygon);
|
if(!p.noDelete) this.polygons.push(polygon);
|
||||||
return polygon;
|
return polygon;
|
||||||
}
|
}
|
||||||
|
|
||||||
newPolyline(p: Polyline) {
|
newPolyline(p: Polyline) {
|
||||||
let polyline = new L.Polyline(p.latlng, Object.assign({color: '#ff4141', weight: 10}, p)).addTo(this.map);
|
let polyline = new L.Polyline(p.latlng, Object.assign({color: '#ff4141', weight: 10}, p)).addTo(this.map);
|
||||||
if(!p.noClick) polyline.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: p, item: polyline}));
|
polyline.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: p, item: polyline}));
|
||||||
if(!p.noDelete) this.polylines.push(polyline);
|
if(!p.noDelete) this.polylines.push(polyline);
|
||||||
return polyline;
|
return polyline;
|
||||||
}
|
}
|
||||||
@ -153,7 +147,7 @@ export class MapService {
|
|||||||
newRectangle(r: Rectangle) {
|
newRectangle(r: Rectangle) {
|
||||||
let rect = new L.Rectangle([r.latlng, r.latlng2], Object.assign({color: '#ff4141'}, r)).addTo(this.map);
|
let rect = new L.Rectangle([r.latlng, r.latlng2], Object.assign({color: '#ff4141'}, r)).addTo(this.map);
|
||||||
if(r.label) rect.bindTooltip(r.label, {permanent: true, direction: 'center'});
|
if(r.label) rect.bindTooltip(r.label, {permanent: true, direction: 'center'});
|
||||||
if(!r.noClick) rect.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: r, item: rect}));
|
rect.on('click', e => this.click.next({latlng: {lat: e.latlng.lat, lng: e.latlng.lng}, symbol: r, item: rect}));
|
||||||
if(!r.noDelete) this.rectangles.push(rect);
|
if(!r.noDelete) this.rectangles.push(rect);
|
||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,7 @@ export class MapComponent implements OnDestroy, OnInit {
|
|||||||
// Handle opening map symbols
|
// Handle opening map symbols
|
||||||
this.map.click.pipe(filter(e => !!e)).subscribe(e => {
|
this.map.click.pipe(filter(e => !!e)).subscribe(e => {
|
||||||
if(this.sub == null && e.symbol) {
|
if(this.sub == null && e.symbol) {
|
||||||
|
if(e.symbol.noClick) return;
|
||||||
this.sub = this.bottomSheet.open(EditSymbolComponent, {data: e, disableClose: true, hasBackdrop: false}).afterDismissed().pipe(finalize(() => this.sub = null)).subscribe(symbol => {
|
this.sub = this.bottomSheet.open(EditSymbolComponent, {data: e, disableClose: true, hasBackdrop: false}).afterDismissed().pipe(finalize(() => this.sub = null)).subscribe(symbol => {
|
||||||
this.syncService.delete(e.symbol);
|
this.syncService.delete(e.symbol);
|
||||||
if(e.item instanceof L.Circle) {
|
if(e.item instanceof L.Circle) {
|
||||||
@ -231,7 +232,7 @@ export class MapComponent implements OnDestroy, OnInit {
|
|||||||
let lastPoint;
|
let lastPoint;
|
||||||
this.sub = this.map.click.pipe(skip(1), finalize(() => this.map.delete(lastPoint))).subscribe(e => {
|
this.sub = this.map.click.pipe(skip(1), finalize(() => this.map.delete(lastPoint))).subscribe(e => {
|
||||||
if (lastPoint) {
|
if (lastPoint) {
|
||||||
let measurement = {latlng: {lat: lastPoint.getLatLng().lat, lng: lastPoint.getLatLng().lng}, latlng2: e.latlng};
|
let measurement = {latlng: {lat: lastPoint.getLatLng().lat, lng: lastPoint.getLatLng().lng}, latlng2: e.latlng, noClick: true};
|
||||||
this.syncService.addMeasurement(measurement);
|
this.syncService.addMeasurement(measurement);
|
||||||
this.map.delete(lastPoint);
|
this.map.delete(lastPoint);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user