Appengine位置标题以什么为基础告诉位置?

时间:2012-10-28 14:48:23

标签: java google-app-engine java-ee http-headers location

我在Google Appengine上托管了我的网络应用。有时我需要知道访客的位置。所以我一直在使用Google提供的请求标头:

        String visitorCountry = request.getHeader("X-AppEngine-Country");
        String visitorRegion = request.getHeader("X-AppEngine-Region");       
        String visitorCity = request.getHeader("X-AppEngine-City");
        String visitorLatLong = request.getHeader("X-AppEngine-CityLatLong");

他们从来没有准确到位,我想它告诉我ISP的位置。 Google Appengine的请求标头在什么基础上有效?它主要是客户端在请求中发送的IP地址吗?

以下是header docs供参考。

2 个答案:

答案 0 :(得分:2)

人们可以到这里 - http://mylocationtest.appspot.com/ - 并查看为他们提供的位置信息。

对我而言,纬度/经度只是所列城市的名义中心 - 距我实际位置约20公里。 ISP是Rogers Canada。

显然,有时候国家会以“ZZ”的形式回归。 http://code.google.com/p/googleappengine/issues/detail?id=5296

此IP地址信息通常与ASN打包在一起。这告诉你ISP,并且如上所述,只有他们可以说出他们的IP被分配的位置。也许位置信息的准确性取决于ISP。

(这不是问题的答案 - 只是进一步讨论 - 但它在评论中并没有真正奏效。)

答案 1 :(得分:1)

根据我的经验,使用HTML5地理定位功能往往比基于IP的位置检测更准确。当您在支持GPS的设备上使用移动网站并且启用了高精度时,尤其如此。

查看这篇文章,以便对这两种方法进行讨论:Why HTML5 Geolocation?