gpt4 book ai didi

php - 使用 SQLite 和 PHP 在边界框中选择地理点?

转载 作者:行者123 更新时间:2023-12-03 18:28:17 25 4
gpt4 key购买 nike

我正在编写一个 PHP/SQLite 后端 API,它需要返回地理边界框中的所有点。这将用于通过 AJAX 调用检索 Google map 可见区域内的标记。

这是一开始听起来 super 容易做的事情之一,只需做一个

SELECT * FROM markers WHERE lat <= :maxLat AND lat >= :minLat 
AND lng <= :maxLng AND lng >= :minLng;

但是假设边界框是
minLat = 13
maxLat = 14
minLng = -178
maxLng = 179

即横跨-180/180度经度。现在,上面的查询将改为选择边界框外的点!

如何使用 SQLite 和 PHP 解决这个问题?

最佳答案

好吧,我想我明白了。

我最终创建了一个不同的查询,具体取决于 south大于 north对于纬度和/或 west大于 east对于经度,将它们组合起来,总共有 4 个可能的查询。

// $coords = ['lngW'=>179, 'lngE'=>-178, 'latS'=>13, 'latN'=>14];

$whereLng = $coords['lngE'] < $coords['lngW'] ?
'(lng >= :lngW OR lng <= :lngE)' :
'(lng >= :lngW AND lng <= :lngE)';

$whereLat = $coords['latN'] < $coords['latS'] ?
'(lat >= :latS OR lat <= :latN)' :
'(lat >= :latS AND lat <= :latN)';

$getStmt = $this->db->prepare(
"SELECT * FROM places WHERE $whereLng AND $whereLat"
);

if( $getStmt->execute($coords) ){
// Do something...
}

关于php - 使用 SQLite 和 PHP 在边界框中选择地理点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46619966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com