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

Posted

技术标签:

【中文标题】如何返回地理位置响应对象以用作另一个函数的参数【英文标题】:How to return geolocation response object to use as a parameter for another function 【发布时间】:2017-12-30 17:32:26 【问题描述】:

我正在寻求一些有关函数和 html5 GeoLocation API 的帮助。

我想使用用户当前位置(经度和纬度)生成一个 url。

我已经设法让代码能够找到当前用户的位置 并将 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();

【问题讨论】:

【参考方案1】:

返回对象有点麻烦,因为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 // 由于 iframe 安全问题,代码段无法工作

【讨论】:

【参考方案2】:

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

// 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();

【讨论】:

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

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

地理定位功能中的 JavaScript 变量范围

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

如何将地理位置 lat lng 从函数传递到 React 中另一个函数的“ll”属性?

geolocation实现地理定位

Google 地理编码服务返回错误 400 错误请求