我正在寻找一种方法来查找最近的城镇/城市和浏览我网站的人的县。然后我希望它是这样的:
$town = "London, England";
或类似的东西:
$town = "Bacup, Lancashire GB";
Google已成功做到这一点。当您搜索某些内容时,在页面底部会显示“您的村庄 - 来自您的网址”。
由于
答案 0 :(得分:1)
由于您想知道查看您网站的人的位置,因此数据将从客户端计算机中获取。 使用
navigator.geolocation.getCurrentPosition(showPosition);
获取客户的位置。 showPosition 是要传递的函数名,因此请使用此名称定义函数。如果您只想在客户端计算机上显示该位置,请执行以下操作:
function showPosition(position) {
var x = document.getElementById("demo");
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
或者您也可以将数据发送到服务器。
您可以在https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition
获取更多相关信息现在您有坐标(找出,准确度如何?),使用谷歌地图位置服务api获取位置名称。 Google Maps Geolocation API - https://developers.google.com/maps/documentation/geolocation/intro
答案 1 :(得分:1)
获取地理IP信息
请求地理IP服务器(netip.de)检查,返回IP所在的位置(主机,州,国家,城镇)。
<?php
$ip='94.219.40.96';
print_r(geoCheckIP($ip));
//Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )
//Get an array with geoip-infodata
function geoCheckIP($ip)
{
//check, if the provided ip is valid
if(!filter_var($ip, FILTER_VALIDATE_IP))
{
throw new InvalidArgumentException("IP is not valid");
}
//contact ip-server
$response=@file_get_contents('http://www.netip.de/search?query='.$ip);
if (empty($response))
{
throw new InvalidArgumentException("Error contacting Geo-IP-Server");
}
//Array containing all regex-patterns necessary to extract ip-geoinfo from page
$patterns=array();
$patterns["domain"] = '#Domain: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #i';
$patterns["state"] = '#State/Region: (.*?)<br#i';
$patterns["town"] = '#City: (.*?)<br#i';
//Array where results will be stored
$ipInfo=array();
//check response from ipserver for above patterns
foreach ($patterns as $key => $pattern)
{
//store the result in array
$ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
}
return $ipInfo;
}
?>