Safari Web Content Guide - 获取地理位置
获取地理位置
iPhone OS Note: 地理位置类从 iPhone OS 3.0 开始提供.
本章介绍获取和跟踪主机设备地理位置信息的相关JavaScript类,这些类隐藏了位置信息如何获取的具体实现──是通过GPS, IP地址,Wi-Fi,蓝牙或者其他技术?这些类允许你获取当前位置,或者一系列位置更新信息。 地理位置类
Navigator
对象具有只读的 Geolocation
实例变量,你可以通过这个 Geolocation
对象获取位置信息, Geolocation
中获取位置信息的函数通常可以设置回调函数, PositionCallback
或者 PositionErrorCallback
实例,因为获取位置信息可能会被延迟,无法立即返回结果,当位置被获取或者出现异常时会触发这些回调函数,如果位置信息获取到,位置回调函数会传入一个位置对象,如果出现异常,异常回调函数会传入一个 PositionError
实例对象描述错误信息,位置信息使用经纬度表示.
获取当前位置
Geolocation
类最常见的使用是获取当前位置,如你的网页程序获取当前用户的位置显示在地图上,使用 Navigator
对象 Geolocation 属性的 getCurrentPosition
方法获取当前位置,传入你的回调函数如下:
// Get the current location
navigator.geolocation.getCurrentPosition(showMap);
设置回调函数的位置参数如下:
function showMap(position) {
// Show a map centered at position
}
使用位置对象的 coords
实例获取经纬度信息:
latitude = position.coords.latitude;
longitude = position.coords.longitude;
跟踪当前位置
你可以跟踪当前位置,如在网页程序中将你当前位置显示在地图上,如果你注册了位置变化监听,你可以在地图上滚动显示一系列你的位置移动信息。如果注册位置变化监听,每次位置改变都会触发你的回调函数,这些回调会一直持续,直到你取消对位置变化的监听。 使用 Geolocation
的 watchPosition
函数监听位置变化,通过参数传入回调函数,如下面的例子,scrollMap
函数会在每次位置变化时调用:
// Register for location changes
var watchId = navigator.geolocation.watchPosition(scrollMap);
回调函数参数如下:
function scrollMap(position) {
// Scroll the map to center position
}
类似 “获取当前位置” ,使用传入的位置对象的 coords
实例获取经纬度信息。 使用Geolocation 的 clearWatch
方法清除位置变化监听,如当用户点击某个按钮或者点击地图时:
function buttonClickHandler() {
// Unregister when the user clicks a button
navigator.geolocation.clearWatch(watchId);
}
Note: 如果激活了 GPS 设备跟踪模式,不间断的跟踪当前位置可能导致设备续航能力下降。
处理位置异常
你的网页程序需要对请求位置信息时出现的错误做处理,例如显示一条信息,告诉用户位置无法获取,可能是网速太慢或者其他问题。 当监听位置变化时,你可以使用 Geolocation
类的 watchPosition
方法传入一个处理错误的回调函数,如下:
// Register for location changes
var watchId = navigator.geolocation.watchPosition(scrollMap, handleError);
这个异常回调函数会传入一个 PositionError
对象作为参数:
function handleError(error) {
// Update a div element with the error message
}