Проверьте, находится ли маркер внутри полигона - PullRequest
0 голосов
/ 27 января 2019

Как узнать, находится ли маркер внутри нескольких ребер или нет? используя https://leafletjs.com/

например. Как проверить, если маркер, как

L.marker([51.505000, -0.09000]).addTo(mymap);

внутри многоугольника, как

L.polygon([ [51.509, -0.08], [51.503, -0.06], [51.51, -0.047] ,[51.53, -0.047]  ]).addTo(mymap).bindPopup("I am a polygon.");

1 Ответ

0 голосов
/ 27 января 2019

Есть несколько подходов к этому. Я бы выбрал листовка-пипс , или, в более общем смысле, TurfJS's booleanPointInPolygon, например ::

var pt = turf.point([ -0.09000, 51.505]);
var poly = turf.polygon([[
  [ -0.08, 51.509], [-0.06, 51.503], [-0.047, 51.51] ,[-0.047, 51.53]
]]);

if (turf.booleanPointInPolygon(pt, poly)) {
   ...
} else {
   ...
}

Обратите внимание, что для leaflet-pip нужны экземпляры L.GeoJSON и что TurfJS обрабатывает данные в формате GeoJSON. Знайте, что широчайший лист Leaflet против длинного ширты GeoJSON .

Глядя на https://leafletjs.com/plugins.html#geoprocessing, кажется, что (на момент написания этой статьи) не было утилит для выполнения вычислений по точкам в многоугольнике только с экземплярами L.Marker и L.Polygon.

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