gpt4 book ai didi

PHP - 计算接近 50 公里的经纬度

转载 作者:行者123 更新时间:2023-12-05 00:49:43 31 4
gpt4 key购买 nike

我有这些数据:

latitude: 50.223137

longitude: 18.679558

现在我想在 PHP 中创建一个特殊函数,它能够计算小于 50 公里的最小纬度和经度以及最大纬度和经度。最后我想得到 4 个参数,我想在简单的 SQL 查询中使用这些参数:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];

我知道,我可以只使用一个 sql 查询:latitude/longitude find nearest latitude/longitude - complex sql or complex calculation但是我的数据库中现在有 20.000.000 条记录,而且它还在增长。我还必须在我的 sql 数据库中搜索其他内容,所以我想基于 PHP 计算所有内容,然后以这种方式在 sql 中搜索:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];因为我认为 - 这是更快的方式。

我还发现了这个功能:https://www.geodatasource.com/developers/php这很好,但我想以其他方式创建该函数 - 我想声明为参数:lat、lng 和距离(例如:50 公里)。最后我想得到 4 个参数 - min_lat, min_lng, max_lat, max_lng。

谁能帮我创建这个函数?

谢谢。

最佳答案

您可以尝试使用此代码。做一些基准测试。

<?php

$lat = 50.223137; //latitude
$lon = 18.679558; //longitude
$distance = 50; //your distance in KM
$R = 6371; //constant earth radius. You can add precision here if you wish

$maxLat = $lat + rad2deg($distance/$R);
$minLat = $lat - rad2deg($distance/$R);
$maxLon = $lon + rad2deg(asin($distance/$R) / cos(deg2rad($lat)));
$minLon = $lon - rad2deg(asin($distance/$R) / cos(deg2rad($lat)));

echo $maxLat, "<br>", $minLat, "<br>", $maxLon, "<br>", $minLon;

输出:

50.672797802959
49.773476197041
19.382380506501
17.976735493499

关于PHP - 计算接近 50 公里的经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37578301/

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