使用谷歌地理定位API的地理位置
问题描述:
因此,我有这个网站,我需要地理定位访问者的位置。使用谷歌地理定位API的地理位置
我看到在谷歌代码验证码:
<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var geo = google.gears.factory.create('beta.geolocation');
function updatePosition(position) {
alert('Current lat/lon is: ' + position.latitude + ',' + position.longitude);
}
function handleError(positionError) {
alert('Attempt to get location failed: ' + positionError.message);
}
geo.getCurrentPosition(updatePosition, handleError);
</script>
似乎差不多就是我需要的,但我必须知道访问者是附近城市X,或者如果它更接近市丫丫
什么办法,我可以做到这一点?
答
找到用户的位置后,您需要执行反向地理定位(请参阅here)。然后,您可以使用返回结果的“城市”字段查看Google放置该用户的位置。
如果您想提出建议,也可以通过HTML5的navigator.geolocation对象实现访问者的地理位置,并且使用此对象还可以为使用其他未安装Google云端硬盘的浏览器的访问者提供服务。
答
一旦您为访问者获取纬度经度对,要找到他们最接近的城市,您可能需要执行搜索与所有城市纬度经度相结合的半直线距离搜索。你可以从geonames中找到大多数城市的经纬度信息:http://download.geonames.org/export/dump/以及更多有关hasrsine距离的信息在这里:http://rosettacode.org/wiki/Haversine_formula
HTML5的问题在于,如果用户不同意,则会弹出一个请求以允许用户进行地理位置定位在给出他目前的位置时,它破坏了地理定位的目的。 这些横幅有时会显示我的城市或我附近的城市?它是否与IP位置? – Souza
我认为谷歌齿轮也会要求用户的许可(这是非常侵入性的,它不)。如果你想要基于IP的地理位置,你需要另一个服务(谷歌不提供这个)。以http://www.maxmind.com/app/geolitecity为例。请注意,还有很多其他的。 –