如何使用用户机器的 PHP 获取经度和纬度?
如果北是正值,如果南是负值,我需要它是经度/
就纬度而言,如果是东则为正值,如果为西则为负值。
我怎样才能做到这一点?
在服务器端进行地理定位的唯一方法是使用 IP 地址的查找表。有一些服务可以为你提供这个,所以你可以这样做:
$ip = !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
$url = "http://freegeoip.net/json/$ip";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);
if ($data) {
$location = json_decode($data);
$lat = $location->latitude;
$lon = $location->longitude;
$sun_info = date_sun_info(time(), $lat, $lon);
print_r($sun_info);
}
但它并不总是非常准确。在 javascript 中,您可以访问 HTML5 Geolocation API 或 Google Maps,但根据 TOS,使用 Google 进行反向地理编码需要您使用地图。
注意 (2019):示例中使用的服务 FreeGeoIP 已关闭,我将把答案留给后代,因为肯定有其他服务提供相同的服务。
因为确切的位置需要用户同意,所以不能用 PHP 完成。尝试使用 JS 获取用户的位置并使用 AJAX 将其发送到服务器。
如果您愿意使用大致位置,则可以按 IP 地址进行映射。网络搜索会为此提供一些选项,例如这个。
请参考 Google Maps API 地理编码器:http: //lab.abhinayrathore.com/ipmapper/
这将回答您来自 AZ 的所有问题。如果您在使用它时遇到问题,请查看在哪里提出并回答了这个问题:Finditude & Longitude of a given IP Address using IPMapper
这将使用 Javascript 而不是 PHP 来完成