我想从启用GPS的移动设备上获取当前位置的纬度和经度,直接从Web浏览器中获取。请问这是否可能?如何做到?是否需要使用地理位置API?提供一些编程示例会很有帮助。谢谢。
我想从启用GPS的移动设备上获取当前位置的纬度和经度,直接从Web浏览器中获取。请问这是否可能?如何做到?是否需要使用地理位置API?提供一些编程示例会很有帮助。谢谢。
使用HTML5地理定位API,这里是官方规范和示例。
编辑
我更新了我的答案以包括当前浏览器支持情况。
W3C地理定位API支持
Firefox 3.5+
Safari 5.0+
Chrome 5.0+
Opera
iPhone 3.0+
Android 2.0+
除了上述列出的手机,其他手机使用Gears或特定于平台的API。
哎呀,我们什么时候才能只有一个API呢?:)
感谢Mark Pilgrim写的精彩文章post。
以下是一个实际使用HTML5 Geolocation API的JavaScript代码。下面的代码既适用于Android浏览器,也适用于iPhone Safari:
function onPositionUpdate(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
alert("Current position: " + lat + " " + lng);
}
if(navigator.geolocation)
navigator.geolocation.getCurrentPosition(onPositionUpdate);
else
alert("navigator.geolocation is not available");
您不需要最新的手机即可使用GPS和地理位置API。几乎所有移动浏览器(没有代理服务器)都可以用于从内置GPS读取位置。如果您的手机具有Java和GPS,则可以使用mobile-gps-web-gate - 请参见http://code.google.com/p/mobile-gps-web-gate/
对于某些人来说,这可能在未来很有帮助。
<!DOCTYPE html>
<html>
<body>
<p>Click the button to get your coordinates.</p>
<button onclick="getLocation()">Try It</button>
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var a = position.coords.latitude + ',' + position.coords.longitude;
alert(a);
}
</script>
</body>
</html>