**W3C地理位置应用程序接口**（W3C Geolocation API）是一项由万维网联盟提出的标准，旨在标准化接收客户端侧设备的地理位置信息（英语：）的接口。此标准定义了一系列兼容ECMAScript标准的对象，这些对象执行于客户端应用程序中并通过查询对应用程序接口（API）透明的位置信息服务器（英语：）获得设备位置。最常见的位置信息来源为IP地址、Wi-Fi、藍牙、MAC地址、射频识别（RFID）、Wi-Fi接入位置、设备全球定位系统（GPS）及GSM/CDMA小区识别码。随后服务器根据可用的最佳位置信息返回特定精度的地理位置。

部署于网页浏览器
--------

网页可在浏览器实现的情况下使用地理位置API。历史上，某些浏览器可通过Google Gears插件实现此功能，但这一项目于2010年废止且其依赖的服务端侧API于2012年停止响应。

地理位置API适合应用于与移动设备（如个人数码助理与智能手机）适配的网页程序。在桌面计算机上，W3C地理位置API自Firefox 3.5、Google Chrome、Opera 10.6、Internet Explorer 9.0、和Safari 5即被支持。掌上设备上，它适用于Android（固件版本2.0+）、iOS、Windows Phone与Maemo。W3C地理位置应用程序接口同样被发布于2010年11月24日的Opera Mobile 10.1实现，支持对Android和Symbian（S60第3及第5代）系统。

Google Gears为老旧和不兼容的浏览器提供了地理位置支持，包括Internet Explorer 7.0+，且Google Chrome原生实现Gears的功能。它同样也能在移动设备上支持地理位置，通过提供Android浏览器（2.0版本之前）及Windows Mobile版Opera Mobile插件的方式实现。但是，Google Gear API与W3C地理位置API且已不受支持。

特性
--

W3C地理位置API的结果通常会返回4项位置属性：经度、纬度（坐标）、海拔（高度）和[位置精度]。这些数据均基于位置来源。在某些查询中，海拔可能不返回任何值。

位置来源
----

地理位置API不提供位置信息。位置信息由设备所获取（例如智能手机、PC或调制解调器），随后才能在浏览器中被API所服务。通常地理位置将通过使用这些方法的其中一种来尝试确定设备位置。

GPS（全球定位系统）通常适用于有着GPS的设备。一部有着GPS且设置到高精度模式的智能手机可能从此来源获取位置数据。GPS从卫星信号中计算位置信息。此方法有着最高的准确度；在大多数Android智能手机中，定位准确度可达到10米内。
移动网络位置手机追踪（英语：）可在无需内置GPS芯片的情况下定位手机或无线调制解调器。
WiFi定位系统若在室内使用WiFi，设备最有可能使用WiFi定位系统（英语：）。部分wifi接入点有着定位服务能力。
IP位置定位基于最近具有公网IP设备（可为计算机、所连接的路由器或是路由器所使用的ISP）的检测位置。此位置信息基于可用的IP信息，但诸多情况下用户的IP都隐藏在互联网服务提供商NAT的背后，精度只能确保为城市级、地区级甚至是国内级。

实现
--

虽然W3C地理位置API未规定实现方法，但是它基于现有的技术构建而成且被Google Gears地理位置API所严重影响。例如：Firefox的地理位置实现使用Google的网络定位提供商。

Google Gears地理位置通过发送可提示用户物理位置的一系列参数至网络定位提供商服务器工作，定位服务器默认为Google所提供的（code.l.google.com）。部分参数为检测到的移动基站及Wi-Fi网络列表与其信号强度。这些参数随后被打包进JavaScript对象表示法（JSON）信息中并通过HTTP POST发送至网络定位提供商。基于这些参数，网络定位提供商可计算位置。人们通常使用位置信息来强制访问控制、本地化与自定义内容；分析流量、個人化網路廣告并防止可能的身份窃取。

### 示例代码

下列是一段用于检测浏览器是否包含地理位置API并利用其来获取当前设备位置的简单JavaScript代码。这段代码使用`<body onload="geoFindMe()">`创建了可于HTML中调用的函数：

```
const geoFindMe = () => {
 if (navigator.geolocation) {
 navigator.geolocation.getCurrentPosition(success, error, geoOptions);
 } else {
 console.log("阁下的网页浏览器不支持地理位置服务。");
 }
}

const success = (position) => {
 const latitude = position.coords.latitude;
 const longitude = position.coords.longitude;
 const altitude = position.coords.altitude;
 const accuracy = position.coords.accuracy;
 console.log(`纬度：${latitude} 经度：${longitude}`);
}

const error = (error) => {
 console.log(`由于 ${error.code}: ${error.message} 无法获取阁下的位置`);
}

const geoOptions = {
 enableHighAccuracy: true,
 maximumAge: 30000,
 timeout: 27000
};

```

另请参阅
----

* 基于位置的服务
* 本地搜索（英语：）

参考文献
----

1. ↑  Popescu, Andrei (editor, Google Inc.).. W3C.  [4 February 2016]. （原始内容存档于2021-05-24）.
2. ↑ . 9 July 2009  [2018-08-11]. （原始内容存档于2012-03-11）.
3. ↑  GeolocationAPI - gears - Provides the geolocation of a device running a Gears-enabled web browser. - Improving Your Web Browser - Google Project Hosting （页面存档备份，存于）. Code.google.com. Retrieved on 2014-06-01.
4. ↑ . 25 May 2010  [2018-08-11]. （原始内容存档于2011-10-07）.
5. ↑  Kleinhout, Huib.. My Opera. Opera Software. 1 July 2010  [2 July 2010]. （原始内容存档于2010-07-02）.
6. ↑ .  [2018-08-11]. （原始内容存档于2011-06-24）.
7. ↑  Opera.com.. 2010-11-25  [2018-08-11]. （原始内容存档于2013-02-23）.
8. ↑ . Mozilla Firefox. Mozilla.  [2018-08-11]. （原始内容存档于2018-02-20）.
9. ↑ . Google Code. Google.  [8 August 2011]. （原始内容存档于2012-02-18）.
10. ↑ . WebScanNotes.com.  [2018-08-11]. （原始内容存档于2012-03-06）.
11. ↑  King, Kevin F.. 8 June 2010. SSRN 1622411 可免费查阅.  缺少或`|url=`为空 (帮助)

1. 如何在JavaScript中实现W3C地理位置API （页面存档备份，存于）
2. **我在哪 -** 一项显示于Google地图上的W3C地理位置 （页面存档备份，存于）

外部链接
----

* W3C地理位置API详细说明（页面存档备份，存于）

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
（W3C） |
| --- |
|  |
| 產品及標準 | 

|  |  |
| --- | --- |
| 推薦 | 
* ActivityPub
* ARIA（英语：）
* Canonical XML
* CDF（英语：）
* CSS
* DOM
* 地理位置API（英语：）
* HTML（HTML5）
* ITS（英语：）
* MathML
* OWL
* P3P
* PLS（英语：）
* RDF
* RDF Schema（英语：）
* SISR（英语：）
* SKOS
* SMIL
* SOAP
* SRGS（英语：）
* SSML
* SVG
* SPARQL
* Timed Text
* VoiceXML
* 网页存储
* WSDL
* XForms
* XHTML
* XHTML+RDFa（英语：）
* XInclude（英语：）
* XLink
* XML
* XML Base
* XML Encryption
* XML Events（英语：）
* XML信息集
* XML命名空间
* XML Schema
* XML Signature
* XOP（英语：）
* XPath
* XPath 2.0（英语：）
* XPointer（英语：）
* XProc（英语：）
* XQuery（英语：）
* XSL
* XSL-FO
* XSLT（元素（英语：））

 |
|  |
| 记录 | 
* XAdES（英语：）
* XHTML+SMIL（英语：）
* XUP

 |
|  |
| 工作草案 | 
* CCXML（英语：）
* CURIE（英语：）
* EME
* InkML
* JSON-LD
* MSE
* RIF
* SCXML（英语：）
* SMIL時間表（英语：）
* sXBL（英语：）
* WICD（英语：）
* XFDL（英语：）
* XFrames（英语：）
* XBL
* XMLHttpRequest

 |
|  |
| 檢測 | 
* 無障礙網頁檢測

 |
|  |
| 倡議 | 
* 多通道交互活動（MMI）（英语：）
* 驗証服務
* 無障礙網頁倡議（英语：）
* 網絡平台（英语：）

 |
|  |
| 棄用 | 
* C-HTML
* HDML（英语：）
* JSSS（英语：）
* PGML（英语：）
* VML
* XHTML+MathML+SVG（英语：）

 |

 |
|  |
| 機構 | 

|  |
| --- |
| 
* 萬維網基金會（英语：）

 |
|  |
| 工作小組 | 
* SVG（英语：）
* CSS（英语：）
* HTML（英语：）
* WebOnt（語義網活動）（英语：）
* 設備描述（DDWG）（英语：）
* 網頁超文本技術工作小組（WHATWG）

 |

 |
|  |
| 軟件 | 

|  |
| --- |
| 
* CERN httpd
* Libwww

 |
|  |
| 瀏覽器 | 
* Line Mode （1990年－）
* Arena （1993年－1998年）
* Agora （1994年－1997年）（英语：）
* Argo （1994年－1997年）（英语：）
* Amaya （瀏覽器及編輯器，1996年－2012年）

 |

 |
|  |
| 會議 | 
* 國際萬維網大會（WWW大會）（英语：）
	+ 督導委員會（IW3C2）（英语：）
	+ 第一屆（WWW1，1994年）（英语：）

 |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
Web接口 |
| --- |
|  |
| 服务器（英语：） | 

|  |  |
| --- | --- |
| 协议 | 
* HTTP
* CGI
* SCGI
* FCGI
* AJP（英语：）
* WSRP（英语：）
* WebSocket

 |
|  |
| 服务器API | 
* C NSAPI（英语：）
* C ASAPI
* C ISAPI
* COM ASP
* Java Servlet
	+ 容器
* CLI OWIN（英语：）
* ASP.NET Handler（英语：）
* Python WSGI
* Ruby Rack（英语：）
* JavaScript JSGI（英语：）
* Perl PSGI（英语：）
* Lua WSAPI（英语：）
* Portlet
	+ 容器（英语：）

 |
|  |
| Apache模块 | 
* mod\_jk（英语：）
* mod\_lisp（英语：）
* mod\_mono（英语：）
* mod\_parrot（英语：）
* mod\_perl（英语：）
* mod\_php
* mod\_proxy（英语：）
* mod\_python（英语：）
* mod\_wsgi（英语：）
* mod\_ruby（英语：）
* Phusion Passenger（英语：）

 |
|  |
| 主题 | 
* Web资源（英语：）与Web服务
* 开放API（英语：）
* 网络钩子
* 應用程式伺服器
	+ 比较（英语：）
* 脚本（英语：）

 |

 |
|  |
| 客户端（英语：） | 

|  |  |
| --- | --- |
| 瀏覽器擴充功能 | 
* C NPAPI
	+ LiveConnect
	+ XPConnect
* C NPRuntime
* C PPAPI
	+ NaCl
* ActiveX
* BHO
* XBAP（英语：）
* WebAssembly

 |
|  |
| Web API | 

|  |  |
| --- | --- |
| W3C | 
* 音频（英语：）
* Canvas
* CORS
* DOM
* DOM事件（英语：）
* EME
* File（英语：）
* Geolocation（英语：）
* IndexedDB
* MSE
* SSE（英语：）
* SVG
* 视频（英语：）
* WebRTC
* WebSocket
* Web消息（英语：）
* 网页存储
* Web worker（英语：）
* XMLHTTP

 |
|  |
| Khronos | 
* WebCL（英语：）
* WebGL

 |
|  |
| 其他 | 
* Gears
* Web SQL Database（前W3C）

 |

 |
|  |
| 主题 | 
* Ajax与DHTML
* Mashup
* Web IDL（英语：）
* 脚本

 |

 |
|  |
| 主题 | 
* 動態網頁
* 开放Web平台（英语：）
* 丰富互联网应用程序
* 网络应用程序

 |

 |