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

时间:2012-05-31 00:48:28

标签: javascript html5 geolocation

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

我遇到的问题是将lat和long分配给全局变量。我知道geolocation 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});

2 个答案:

答案 0 :(得分:1)

.. 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 Demo

答案 1 :(得分:0)

更像这样的事情:

// 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;
}