为什么Geolocation没有返回确切的地址

时间:2012-02-20 06:11:43

标签: html geolocation

有人可以向我解释为什么当我允许HTML5地理位置演示使用我的位置时它总会返回纽约,但是,当我打开手机时它会显示我的确切位置?我试图在我的网站上实现“当前位置”功能,但我不知道是否可能。

谢谢

2 个答案:

答案 0 :(得分:3)

您的手机有一个GPS radio,可以将您的位置缩小到十几米左右。您的计算机(通常)没有此类功能。您的浏览器可以使用IP地址等信息将close提升到您的实际位置,但无法实现手机的精确度。

答案 1 :(得分:1)

您的手机可以使用许多其他信息,这些信息可用于比典型的有线桌面更准确地确定您的位置。值得注意的是:

  • GPS接收器
  • 手机可见的Wi-Fi接入点(AP)以及每个
  • 的信号强度
  • 手机可以看到手机信号塔以及每个信号强度

GPS

一般来说,GPS可用时可能会提供最高的准确度。通过清晰的天空视野,大多数手机可以使用GPS在5米或更短的范围内对您进行地理定位。

的Wi-Fi

Google / Apple等公司的信息与地理位置的已知AP SSID s / MAC地址相匹配。手机可以向服务(例如Google的geolocation API)发送有关其可以看到的AP及其信号强度的信息。该服务根据其对这些AP的了解以及服务提供商根据AP信号强度确定位置所使用的任何专有算法返回位置估计值。

Cell tower

与Wi-Fi信息非常相似,您的手机可以向服务发送手机信号塔可见性/信号强度信息,该服务可根据其对所考虑的手机信号塔的了解来估算位置。


以下是手机可能发送到Google's geolocation service的示例(从链接逐字复制):

    {
  "version": "1.1.0",
  "host": "maps.google.com",
  "home_mobile_country_code": 310,
  "home_mobile_network_code": 410,
  "radio_type": "gsm",
  "carrier": "Vodafone",
  "request_address": true,
  "address_language": "en_GB",
  "location": {
    "latitude": 51.0,
    "longitude": -0.1
  },
  "cell_towers": [
    {
      "cell_id": "42",
      "location_area_code": 415,
      "mobile_country_code": 310,
      "mobile_network_code": 410,
      "age": 0,
      "signal_strength": -60,
      "timing_advance": 5555
    },
    {
      "cell_id": "88",
      "location_area_code": 415,
      "mobile_country_code": 310,
      "mobile_network_code": 580,
      "age": 0,
      "signal_strength": -70,
      "timing_advance": 7777
    }
  ],
  "wifi_towers": [
    {
      "mac_address": "01-23-45-67-89-ab",
      "signal_strength": 8,
      "age": 0
    },
    {
      "mac_address": "01-23-45-67-89-ac",
      "signal_strength": 4,
      "age": 0
    }
  ]
}

请注意,示例中的某些信息比我描述的更详细。但是你可能会想到一种典型的现代手机所提供的有关位置的提示,而台式机无法提供。

根据我的个人经验,基于Wi-Fi / Cell塔的地理定位不如GPS准确,但可能非常好。例如,在没有GPS芯片的iPad型基础上,我可以通过单独的Wi-Fi /手机信号塔获得50米内的精度。在人口密度较高的Wi-Fi区域(例如在城市),我认为准确性更好,并且随着时间的推移会越来越好。