【发布时间】:2018-10-31 16:35:52
【问题描述】:
我有这个精确的 GIS 坐标集合,我正在尝试使用 laravel 的 contains 帮助器通过 lat 和 long 来查找位置匹配。采集样本为$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)和我正在搜索的GIS 数据具有 12 位小数的坐标 (44.174837264857)。我的理解是 contains 仍然会找到匹配项,但我想当我到达那里时我会越过那座桥......我还尝试使用键/值对拆分检查:
$lngCheck = $points->contains('x', $lng);
$latCheck = $points->contains('y', $lat);
然后检查它们是否都为真。我还是老是假的。
【问题讨论】:
标签: php laravel laravel-5 collections laravel-5.4