@nurzhannogerbek

Как проверить вхождение метки в полигоны?

Есть коллекция (GeoObjectCollection) в которой хранятся полигоны (Polygon). Пытаюсь проверить вхождение метки (Placemark) в полигон. Как это правильно сделать в моем конкретном случаи?

В документации нашел метод each, который должен был перебирать все элементы коллекции. Ниже стоящий код не работает. Что я делаю не так?

self.polygonCollection.each(function (polygon) {
    if(polygon.contains(res.geometry.getCoordinates())) {
        console.log("Метка входит в полигон.")
    }
});
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
@nurzhannogerbek Автор вопроса
Проблему нашел. Правильный код выглядит следующим образом:

self.polygonCollection.each(function(polygon) {
    if (polygon.geometry.contains(res.geometry.getCoordinates())) {
        console.log("Метка входит в полигон.")
    }
 });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Попробуйте отказаться от jQuery и перейти к forEach:

self.polygonCollection.forEach(function(polygon, i, arr) {
  if(polygon.contains(res.geometry.getCoordinates())) {
        console.log("Метка входит в полигон.")
    }
});


В jQuery:

$.each(self.polygonCollection, function (key, polygon) {
    if(polygon.contains(res.geometry.getCoordinates())) {
        console.log("Метка входит в полигон.")
    }
});


А еще лучше совсем отказаться от таких общеупотребительных названий переменных, как polygon, используйте нечто более компактное либо уникальное
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы