nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit b9b25db08ebf01ca01db403c0b55ae920b2e2e83
parent 996903d2c1b24248febaad6dda435cec90d72927
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Tue, 30 Jun 2020 10:31:45 +0200

track list: refactoring - make separate function for closest point on line segment

Diffstat:
Msrc/lib/leaflet.control.track-list/track-list.js | 24++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -56,6 +56,14 @@ function unwrapLatLngsCrossing180Meridian(latngs) { return unwrapped; } +function closestPointToLineSegment(latlngs, segmentIndex, point) { + const crs = L.CRS.EPSG3857; + point = crs.latLngToPoint(point); + const segStart = crs.latLngToPoint(latlngs[segmentIndex]); + const segEnd = crs.latLngToPoint(latlngs[segmentIndex + 1]); + return crs.pointToLatLng(L.LineUtil.closestPointOnSegment(point, segStart, segEnd)); +} + L.Control.TrackList = L.Control.extend({ options: {position: 'bottomright'}, includes: L.Mixin.Events, @@ -952,24 +960,16 @@ L.Control.TrackList = L.Control.extend({ splitTrackSegment: function(trackSegment, nodeIndex, latlng) { var latlngs = trackSegment.getLatLngs(); - latlngs = latlngs.map(function(ll) { - return [ll.lat, ll.lng]; - } - ); + latlngs = latlngs.map((latlng) => latlng.clone()); var latlngs1 = latlngs.slice(0, nodeIndex + 1), latlngs2 = latlngs.slice(nodeIndex + 1); if (latlng) { - var p = this.map.project(latlng), - p1 = this.map.project(latlngs[nodeIndex]), - p2 = this.map.project(latlngs[nodeIndex + 1]), - pnew = L.LineUtil.closestPointOnSegment(p, p1, p2); - latlng = this.map.unproject(pnew); - latlngs1.push(latlng); - latlng = [latlng.lat, latlng.lng]; + latlng = closestPointToLineSegment(latlngs, nodeIndex, latlng); + latlngs1.push(latlng.clone()); } else { latlng = latlngs[nodeIndex]; } - latlngs2.unshift(latlng); + latlngs2.unshift(latlng.clone()); this.deleteTrackSegment(trackSegment); var segment1 = this.addTrackSegment(trackSegment._parentTrack, latlngs1); this.addTrackSegment(trackSegment._parentTrack, latlngs2);