При использовании Turf.nearPoint () какой тип точки следует использовать? Документация для Turf.nearestPoint () не выглядит правильно - PullRequest
0 голосов
/ 31 января 2020

Любой код, который я здесь привожу, - это то, что я должен транскрибировать из другой системы, поэтому нет простого способа опубликовать мой код. Если бы я мог опубликовать весь проект darn.

Я пытался реализовать это https://turfjs.org/docs/#nearestPoint в нашем проекте, но продолжаю получать сообщения об ошибках.

TS2345: аргументы типа 'FeatureCollection '

Тип Геометрия не может быть назначена типу Point Тип свойства несовместим. Тип string не назначается набрать Point

Я видел этот пост turf.nearestPoint, возвращающий только ту же точку Где в посте он имеет

map.on('click', function(e) {
  var coord = e.latlng;
  var lat = coord.lat;
  var lng = coord.lng;
  var targetPoint = turf.point([lng, lat]);
  var nearest = turf.nearestPoint(targetPoint, points);
    alert(JSON.stringify(nearest)); 
});

В моем коде я

  • Использование события щелчка мыши для создания selectPoint через turf.point ([lng, lat]}

  • Создание моих точек из массив точек, который я также создал с помощью того же подхода turf.point ([lng, lat])

Но безрезультатно я всегда получаю ошибку TS, упомянутую выше.

Также в документации на странице Turf указано, что targetPoint - это Coord, но в коде других плакатов есть Turf.point, который является функцией

Аргументы

Аргумент ------ Тип ------ Описание

targetPoint ---- Coord ----- ссылка point

points ------ FeatureCollection ------ против набора точек ввода

После 8+ часов попыток заставить это работать, у меня есть у меня не осталось волос, чтобы вырваться, и я сомневаюсь во всем, что я сделал сегодня.

Может кто-нибудь помочь или просто указать мне на что-то, что действительно работает и не имеет крипти c комментариев, предназначенных только для люди, которые уже знакомы с технологией?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Просто чтобы помочь другим, кто может с этим бороться.

import * as Turf from '@turf/turf';

private handleClickEvent(e: Leaflet.LeafletEvent) {
    const latLng: Leaflet.LatLng = e.latlng;
    // Note in Turf it is backwards longitude, latitude where normally its lat, lng
    let mapClickLocation: Feature<Point> = Turf.point( [latLng.lng, latLng.lat] );

    let allYourGeoPoints: Array<Feature<Point>> = [];
    // Values you'd set in the allYourGeoPoints e.g.
    allYourGeoPoints.push(Turf.point([lng, lat], {'id': idOfYourRecord});

    // Create a collection of points usable by Turf
    let collectionOfPoints: FeatureCollection<Point> = Turf.featureCollection(allYourGeoPoints);

    // Now find the nearest item
    let nearestPointFound: NearestPoint = Turf.nearestPoint(mapClickLocation,  collectionOfPoints);

}
0 голосов
/ 04 февраля 2020

Рассматривали ли вы Leaflet.GeometryUtil ?

Предполагая, что ваши очки являются маркерами (L.Marker):

map.on('click', function (e) {
var layersToSearch = [];
map.eachLayer(layer => {
    if (layer instanceof L.Marker) {
        layersToSearch.push(layer);}
})
nearestLayer = L.GeometryUtil.closestLayer(map, layersToSearch, e.latlng); 
nearestLayer.layer.bindPopup('Nearest Point').openPopup();


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...