我正在寻找一种方法来查找浏览我网站的人所在的最近的城镇和县。然后我希望它是这样的:
$town = "London, England";
或者类似于:
$town = "Bacup, Lancashire GB";
谷歌成功地做到了这一点。当你搜索某个东西时,页面底部会显示"你的村庄——来自你的互联网地址"。
感谢
由于您想知道查看您网站的人的位置,因此数据将从客户端机器中获取。使用
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来获取位置名称。谷歌地图地理定位API-https://developers.google.com/maps/documentation/geolocation/intro
获取地理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;
}
?>