0

我正在“尝试”使用 JavaScript 的地理定位功能,但我认为 JavaScript 的工作方式存在问题。我找到了很多关于如何使用地理定位功能的例子,它们基本上都是这样的:

navigator.geolocation.getCurrentPosition(function(position){alert("Your Coordinates:\nLatitude: " + position.coords.latitude + "\nLongitude: " + position.coords.longitude);});

上面的代码有效,但我想做的是这样的:

function geoMe(){
    var position = navigator.geolocation.getCurrentPosition();
    var geoLocationDiv = document.getElementById('geoLocationDiv');
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    geoLocationDiv.innerHTML = latitude + "," + longitude;
}

正如您可能猜到的那样,它不起作用。我从来都不擅长解释像示例一样“卡住”在一起的代码,所以我很困惑。

在查看示例代码时,看起来有一个名为“getCurrentPosition”的函数。现在,这就是我迷路的地方。看起来有一个函数作为参数传递给 getCurrentPosition,它具有 [作为参数] 一个名为“位置”的参数。“位置”参数从何而来???我已经看到将函数(没有实际函数名)用作参数的位置,但这真的让我感到困惑。通常,我会执行以下操作:

function functionName(parameter1, parameter2, parameterN){
    function body
}

我知道做这样的事情应该是先进的,但我是一个简单的人,我喜欢我的代码简单,我喜欢我的函数有名字。

那么,那里的任何人都可以帮助我让这个 GeoLocation 的东西按照我想要的方式工作吗?并且,也许在此过程中,解释一下这种奇怪的 JavaScript 函数方法?

谢谢你,祝你有美好的一天。:-)

4

2 回答 2

2

这:

function geoMe () {
    navigator.geolocation.getCurrentPosition(function ( pos ) {
        document.getElementById('geoLocationDiv').innerHTML =
                pos.coords.latitude + "," + pos.coords.longitude;
    });
}

现场演示:http: //jsfiddle.net/K6sKe/1/

您必须将函数对象传递给该getCurrentPosition方法。该函数充当回调函数,并在用户授予访问其位置的权限时被调用。在我们的例子中,我们的回调函数是一个匿名函数表达式。该getCurrentPosition方法旨在调用将 Position 对象传递给它的回调。因此,我们的函数表达式定义了一个pos表示 Position 对象的形式参数 ( )。在回调中,我们可以访问该 Position 对象。

于 2012-10-05T23:40:24.340 回答
1

如果您只是将 getCurrentPosition 视为另一个接受一个参数的函数,这并不奇怪。但是,该参数恰好是一个匿名函数。这里有一个非常简单的例子来说明回调函数的思想。

function sayHi(myFunction) {
    alert(myFunction());
}

sayHi(function() {return 'Hello World'});

在上面,sayHi 是一个接受名为 myFunction 的参数的函数,而 myFunction 只是一个返回字符串 'Hello World' 的函数。这显然是一个过于简化的示例,您可以通过传递字符串轻松实现。但是当函数变得更复杂时,使用这种方法可以为您提供更大的灵活性和更简洁的代码。

于 2012-10-06T00:43:12.247 回答