У меня есть эта коллекция точных координат ГИС, и я пытаюсь найти совпадения местоположений, пропуская как лат, так и лонг, используя хелпер laravel. Образец коллекции как $points
:
Polygon {#16091
#points: array:103 [
0 => Point {#719
+x: -93.299203918246
+y: 44.914451664177
}
1 => Point {#729
+x: -93.299203946751
+y: 44.914492803531
}
2 => Point {#737
+x: -93.299203993418
+y: 44.914561369423
}
3 => Point {#738
+x: -93.299204049158
+y: 44.914643647233
}
]
}
Мой чек if ($points->contains($lng, $lat)) { // do something }
. Я не получаю никаких совпадений, так что просто интересно, могу ли я вообще использовать contains()
в этом контексте? Я знаю, что это работает с более простой коллекцией. Я попытался жестко запрограммировать то, что определенно будет точным совпадением (извлечено из набора данных, который я ищу), и он все еще возвращает false. Еще одна проблема, с которой я даже не начал сталкиваться, заключается в том, что координаты, исходящие из одного запроса, задающего $lat
и $lng
, имеют 6 десятичных знаков (-93.208572
), и данные ГИС, которые я ищу имеет координаты с 12 десятичными знаками (44.174837264857
). Насколько я понимаю, то, что содержит, все равно найдет совпадения, но я предполагаю, что перейду этот мост, когда доберусь туда ... Я также попытался разделить проверку парами ключ / значение:
$lngCheck = $points->contains('x', $lng);
$latCheck = $points->contains('y', $lat);
и затем проверка того, верны ли они для совпадения. Я все еще всегда становлюсь ложным.