如何返回地理位置响应对象以用作另一个函数的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何返回地理位置响应对象以用作另一个函数的参数相关的知识,希望对你有一定的参考价值。

我对函数和html5 GeoLocation API提供了一些帮助。

我想使用用户当前位置(经度和纬度)生成网址。

我设法让代码工作以找到当前用户的位置并将position.coords对象分配给名为coords的变量。

我想知道的是,我是否可以返回locationSuccess函数中的对象,然后将该对象作为generateURL函数的参数传递,并检索纬度和经度以控制记录完成的URL。

我可能完全错了,但是一些帮助会很棒。 TIA。

// app.js

function getUserLocation() {

	function locationSuccess(position) {

		console.log("success");

		var coords = position.coords;

	}

	function locationError() {

		console.log("error")

	}


navigator.geolocation.getCurrentPosition(locationSuccess, locationError);

}

function generateURL() {


}

function app() {

	getUserLocation();

}

window.onload = app();
答案

返回对象有点麻烦,因为getCurrentPosition函数是异步的。

您可以将coords对象作为参数传递给generateURL函数,并在locationSuccess函数内调用它。

function getUserLocation() {

  function locationSuccess(position) {
    console.log("success");
    var coords = position.coords;
    generateURL(coords);
  }

  function locationError() {
    console.log("error")
  }
  navigator.geolocation.getCurrentPosition(locationSuccess, locationError);
}

function generateURL(coords) {
  var URL = 'http://example.com/?lat=' + coords.latitude + '&long=' + coords.longitude;
  console.log(URL);
}

function app() {
  getUserLocation();
}

window.onload = app();

JSFiddle // Snippet由于iframe安全问题而无效

另一答案

将变量position作为参数传递给generateURL()函数。请参阅下面的修改和评论。

// app.js

function getUserLocation() {

	function locationSuccess(position) {
            console.log("success");

            var coords = position.coords;

            // Pass the object as a parameter to the generateURL() function.
            generateURL(position);
	}

	function locationError() {
	    console.log("error")
	}

        navigator.geolocation.getCurrentPosition(locationSuccess, locationError);

}

// Added: variable position as a parameter to the function
function generateURL(position) {
    console.log(position);

}

function app() {
    getUserLocation();
}

window.onload = app();

以上是关于如何返回地理位置响应对象以用作另一个函数的参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将方法的返回值用作另一个方法的参数?

WSO2:如何将一个api的响应用作另一个API的输入参数

如何返回要用作参数的类的名称

如果参数是数字,我如何在雪花中获得一个 javascript 函数以返回一个值,或者如果参数不是数字,则返回另一个值?

如何返回使用参数包定义的成员函数的 std::function 对象?

Promise入门之:让函数返回一个Promise对象