【问题标题】:Geolocation with google geolocation api使用谷歌地理定位 api 进行地理定位
【发布时间】:2012-01-04 02:31:28
【问题描述】:

所以,我有这个网站,我需要定位访问者的位置。

我在 google code 看到了这段代码:

<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 市附近还是在 Y 市附近

有什么办法可以做到吗?

【问题讨论】:

    标签: php javascript jquery google-maps-api-3


    【解决方案1】:

    找到用户位置后,需要进行反向地理定位(见here)。然后您可以使用返回结果的“城市”字段来查看 google 将这个用户放在哪里。
    如果您愿意接受建议,您还可以通过 HTML5 的 navigator.geolocation 对象实现访问者的地理位置,这样您还可以为使用其他未安装 google gear 的浏览器的访问者提供服务。

    【讨论】:

    • HTML5 的问题是会弹出一个请求让用户允许地理定位,如果用户不同意提供他当前的位置,就会破坏拥有地理定位的目的。那些有时显示我的城市或我附近的城市的横幅如何?是否与 IP 位置有关?
    • 我认为 google gears 也会要求用户的许可(它不这样做是非常具有侵略性的)。如果您想要基于 ip 的地理定位,则需要其他服务(谷歌不提供此服务)。例如检查maxmind.com/app/geolitecity。请注意,还有很多其他的。
    【解决方案2】:

    一旦您为访问者获取了一个纬度经度对,以查找他们离哪个城市最近,您可能需要结合所有城市的经纬度来执行半正弦距离搜索。您可以从地名中找到大多数城市的经纬度信息:http://download.geonames.org/export/dump/,更多关于半正弦距离的信息在这里:http://rosettacode.org/wiki/Haversine_formula

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-02
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多