相关疑难解决方法(0)

纬度/经度找到最近的纬度/经度 - 复杂的sql或复杂的计算

我有纬度和经度,我想从数据库中提取记录,该记录具有最近的纬度和经度,如果该距离长于指定的距离,则不检索它.

表结构:

id
latitude
longitude
place name
city
country
state
zip
sealevel
Run Code Online (Sandbox Code Playgroud)

mysql sql math coordinates computational-geometry

163
推荐指数
9
解决办法
19万
查看次数

如何在php中计算lat/long的距离?

我想要做的是我在数据库中有条目存储lat/long.我想计算用户lat/long和条目lat/long(在DB中)之间的距离.在那之后,我想回应距离小于500米的那些.到目前为止,我能够使用它foreach.

<?php
mysql_connect("localhost", "beepbee_kunwarh", "kunwar") or die('MySQL Error.');
mysql_select_db("beepbee_demotest") or die('MySQL Error.');

$Lat = $_REQUEST['Lat'];
$long = $_REQUEST['long'];

$query = mysql_query("SELECT a.*, 3956 * 2 * ASIN(SQRT( POWER(SIN(($Lat - Lat) * pi()/180 / 2), 2) + COS($Lat * pi()/180) * COS(Lat * pi()/180) *POWER(SIN(($long - long) * pi()/180 / 2), 2) )) as distance FROM userResponse GROUP BY beepid HAVING distance <= 500 ORDER by distance ASC;");
$data = array();
while ($row = mysql_fetch_array($query)) {
    $data[] = $row; …
Run Code Online (Sandbox Code Playgroud)

php latitude-longitude

10
推荐指数
4
解决办法
5万
查看次数

确定最近的镜像PHP

我维护一个包含大量可下载文件的站点.它目前托管在美国的服务器上,但我最近在德国购买了一台新服务器.我想将下载镜像到德国的服务器,并在第一台服务器(托管网站)上有一个PHP脚本,根据用户的位置检测要使用的文件镜像.例如,如果用户在加拿大,他们应该从我在美国的当前服务器下载文件.如果他们在法国,他们应该从德国获取文件,而不是从大西洋下载.那么,我如何确定他们离哪个国家更近?

我知道MaxMind GeoIP,并安装了它,但这只是给了我一个国家,而AFAIK,没有办法自动确定我的两个镜像国家中哪个国家最接近.我想我能做的就是走大陆:让亚洲,欧洲,非洲和澳大利亚的用户从德国获取内容,来自北美和南美的访问者从美国获取文件如果有人能想到更好的解决方案,我愿意接受建议.


好吧,我想我会按照我原来的大陆检查想法去做.对于其他想要做这种事情的人来说,这将是一个很好的起点.当我在欧洲有多个镜子时,问题就出现了,但是大陆的想法现在必须起作用.

php ip-address proximity geolocation mirroring

8
推荐指数
1
解决办法
1556
查看次数

在某些情况下,acos(1)返回NAN

这是我的代码:

<?php

$lat1 = 35.697959;
$lat2 = 35.697959;
$lon1 = 139.707085;
$lon2 = 139.707085;
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
var_dump($dist); // returns 1

$dist = acos($dist); 
var_dump($dist); // returns NAN
Run Code Online (Sandbox Code Playgroud)

正如您从注释中看到的,$dist等于1在计算之后,但是在我应用acos()时返回NAN

如果我尝试手动复制它,则效果很好:

$x = 1;
$x = acos($x);
var_dump($x);  // returns 0 as expected
Run Code Online (Sandbox Code Playgroud)

这是怎么回事,我该如何解决?

是在线外壳程序的相同代码,因此您可以看到它实际上返回了这些值。

php math floating-point trigonometry nan

6
推荐指数
1
解决办法
976
查看次数

PHP检查纬度和经度是否在圆内

原始问题检查纬度和经度是否在圆内

我想知道如何使用 PHP 来实现这一点。我有一组纬度和经度,想根据另一个纬度/经度数组测试它们,以给出正确/错误的场景

在此输入图像描述

php geometry distance latitude-longitude

4
推荐指数
1
解决办法
2862
查看次数