我正在寻找一个好的PHP地理定位服务,所以当我启动我的应用程序时,我可以有类似的东西:
<?php
$service = new GeoLocService();
echo $service->getLat();
echo $service->getLng();
?>
以纬度和逻辑值的形式检索用户的位置。
答案 0 :(得分:10)
地理位置需要在浏览器中完成,因为服务器(即PHP)永远无法找到大部分相关数据。在浏览器中进行地理定位的主要API是Google,但作为开发人员,您不需要使用该API;您将使用标准化的浏览器API(尽管到目前为止仅在少数浏览器中支持)。
在服务器端查找用户所获得的最有用的信息将是他们的IP地址,这通常足以将他们定位到最近的城镇。有IP到国家和IP到位置的数据库和API,您可以下载它们来帮助解决这个问题。有些是免费的,但要获得城镇级别的位置,您将支付服务费用。无论你使用哪种方式,它们都需要保持最新状态,因为IP范围经常被重新分配。
浏览器级API的工作原理是让浏览器扫描Wi-Fi接入点的区域。它会将访问点列表发送给Google,然后Google会使用该列表来计算Lat / Long(通常会得到令人惊讶的准确结果)。
他们是如何做到的?您可能还记得Google最近因为从人们的Wi-Fis中吸取数据而陷入困境吗?他们实际上要做的是为这个地理位置功能映射世界上的Wi-Fi接入点。
当然,它确实要求客户启用Wi-Fi。
请注意,您的浏览器不能直接访问此客户端访问点列表(即Javascript或DOM),因此您无法通过服务器将其发布到PHP以使用此方法获取位置;它必须在客户端完成。
答案 1 :(得分:3)
MaxMind PHP API也不错...... http://www.maxmind.com/app/php
答案 2 :(得分:1)
阅读以下有关Geo-Loacaion API的文档: http://dev.w3.org/geo/api/spec-source-v2.html
我确信上述文档对您非常有用。
答案 3 :(得分:0)
PHP获取真实IP地址,国家/地区,城市,州,访客语言
您也可以检测真正的IP,访客代理,语言,州,城市。但对于PHP代码,您必须download PHP Source Code from Github。
<?php
// Required Libraries
require_once("ip.codehelper.io.php");
require_once("php_fast_cache.php");
// New Class
$_ip = new ip_codehelper();
// Detect Real IP Address & Location
$real_client_ip_address = $_ip->getRealIP();
$visitor_location = $_ip->getLocation($real_client_ip_address);
// Output result
echo $visitor_location['Country']."
";
echo "<pre>";
print_r($visitor_location);
在你的情况下,你从返回的结果中获取$ visitor_location ['RegionName']。