簡體   English   中英

如何返回地理位置響應對象以用作另一個函數的參數

[英]How to return geolocation response object to use as a parameter for another function

我對函數和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(); 

因為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安全問題而無法使用

將變量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(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM