我在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供参考。
答案 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?