将 HTML5 地理坐标分配给 JavaScript 变量

Assigning HTML5 geo coordinates to JavaScript variables

本文关键字:JavaScript 变量 分配 坐标 HTML5      更新时间:2023-09-26

我正在尝试将全局变量分配给JavaScript中的HTML5地理位置坐标,并通过jQuery将这些坐标传递给表单字段。

我遇到的问题是将纬度和经度分配给全局变量。我知道地理位置 api 是通过"navigator.geolocation"公开的,但我在将这些值分配给全局变量时一定缺少一些东西。

这是我的尝试:

    var latitude = null;
function lat()
{
    if (navigator.geolocation)
    {
        latitude = position.coords.latitude;
    }
}
var longitude = null;
function lon()
{
    if (navigator.geolocation)
    {
        longitude = position.coords.latitude;
    }
}

任何帮助消除错误将不胜感激。

编辑:试过这个。无法获取值,但不会导致Firebug错误:

    var latitude = navigator.geolocation.getCurrentPosition(function(position){
  lat = position.coords.latitude
  return lat
});
var longitude = navigator.geolocation.getCurrentPosition(function(position){
  lon = position.coords.longitude
return lon});

..edit2:使用更有用的回调示例进行更新。

function requestCurrentPosition(){
        if (navigator.geolocation)
        {
        navigator.geolocation.getCurrentPosition(useGeoData);
        }
}
 function useGeoData(position){
    var longitude = position.coords.longitude;
    var latitude = position.coords.latitude;
    /*do stuff with long and lat here.*/
  }

..编辑:更新示例...

var latitude = null;
function lat()
{
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(
        function(position){
              latitude = position.coords.latitude;
        });
}
}
var longitude = null;
function lon()
{
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(
        function(position){  
            longitude = position.coords.latitude;
        });
    }
}
}

你可能想看看这个HTML5演示

像这样的东西怎么样:

// Does this browser support geolocation?
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(locationSuccess, locationError);
}
else{
    showError("Your browser doesn't support geolocation!");
}
// Now get user's location
function locationSuccess(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
}