Php IP地址转换为与特定邮政编码的距离
我想做的是能够抓取一个用户的IP地址,并辨别它距离我的固定位置大约有多少英里。我意识到,通过使用服务或数据库,我可以找到城市和邮政编码,但我也想找出用户zip和我的zip之间的大致距离 我看到一个服务和数据库从用户IP获取Zip/城市/国家。我还使用了一些PHP类来计算从一个邮政编码到另一个邮政编码的距离。假设我可以使用一个数据库来获取zip,另一个数据库来比较两个zip之间的距离,但这似乎需要大量资源(至少2个查询加上处理) 我只想显示一个博物馆展览的广告,如果用户在100英里左右(基于IP)。如果不是的话,我就不展示了,因为看起来他们太远了 有没有更简单的方法来实现这一点 此外,我不希望浏览器询问用户我是否可以使用新的HTML5内容在我的应用程序中使用他们的地理位置。我宁愿这一切都发生在幕后,没有基于位置的感知(和用户选择),除非有压倒性的理由使用它 我愿意接受任何解决方案,但希望在PHP/MYSQL/jQuery/Javascript领域找到一个Php IP地址转换为与特定邮政编码的距离,php,javascript,mysql,geolocation,Php,Javascript,Mysql,Geolocation,我想做的是能够抓取一个用户的IP地址,并辨别它距离我的固定位置大约有多少英里。我意识到,通过使用服务或数据库,我可以找到城市和邮政编码,但我也想找出用户zip和我的zip之间的大致距离 我看到一个服务和数据库从用户IP获取Zip/城市/国家。我还使用了一些PHP类来计算从一个邮政编码到另一个邮政编码的距离。假设我可以使用一个数据库来获取zip,另一个数据库来比较两个zip之间的距离,但这似乎需要大量资源(至少2个查询加上处理) 我只想显示一个博物馆展览的广告,如果用户在100英里左右(基于IP)
谢谢您可以使用类似的或其他类似的服务(甚至是一个谷歌API) 然后,由于它提供了横向/纵向坐标,只需使用以下函数将距离映射到您自己的坐标。不过要小心-一些IP地址的lat/long坐标远离目标,并且根本不会与手机/小区相关。IP漫游不畅:
function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
{
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return ($miles ? ($km * 0.621371192) : $km);
}
希望这有帮助。您可以使用类似的服务或其他类似的服务(甚至是一个谷歌API) 然后,由于它提供了横向/纵向坐标,只需使用以下函数将距离映射到您自己的坐标。不过要小心-一些IP地址的lat/long坐标远离目标,并且根本不会与手机/小区相关。IP漫游不畅:
function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
{
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return ($miles ? ($km * 0.621371192) : $km);
}
希望这有帮助。有两个问题需要解决,(1)获取用户的纬度/经度,(2)计算距离。对于(2),您希望使用哈弗森公式:
有两个问题需要解决,(1)获取用户的lat/lon和(2)计算距离。对于(2),您希望使用哈弗森公式:
我的公司使用一种叫做邮政编码服务的服务。它位于。它做了你在问题中强调的所有事情
最酷的是,它都是基于服务的(Rest/JSON、XML或SOAP,由你自己选择),而且也非常便宜——每月大约15美元。我的公司使用一种叫做邮政编码服务的服务。它位于。它做了你在问题中强调的所有事情
最酷的是,它都是基于服务的(Rest/JSON、XML或SOAP,由你自己选择),而且也很便宜——每月15美元。我的IP地址来自ISP的DSL,离ISP只有4小时车程。这从来都不对。我的isp是国际性的,有时我的ip查找显示错误的国家。你是说像ip-tracker.org?你可以对其进行筛选,或者看看是否有API,祝手机用户好运。他们的IP总是某种NAT网关,它可以从手机的物理位置上千里之外。IP是一种非常糟糕的方式来跟踪一大片IP空间的位置。我只有大约6%的流量来自移动设备,我准备接受这一点。尽管ISP IP查找需要几个小时才能完成的其他一些问题是一个更大的问题。谢谢你提供的信息。我的IP地址来自我的ISP的DSL,离我只有4小时车程。这从来都不对。我的isp是国际性的,有时我的ip查找显示错误的国家。你是说像ip-tracker.org?你可以对其进行筛选,或者看看是否有API,祝手机用户好运。他们的IP总是某种NAT网关,它可以从手机的物理位置上千里之外。IP是一种非常糟糕的方式来跟踪一大片IP空间的位置。我只有大约6%的流量来自移动设备,我准备接受这一点。尽管ISP IP查找需要几个小时才能完成的其他一些问题是一个更大的问题。谢谢你的信息。我以前没见过活字链接。好资源!以前从未见过活字链接。好资源!