2017-12-17 4 views
0

edit1: entfernt die var von lan und lon unter der Funktion showPosition.Wie man Koordinaten von innerhalb einer Funktion zu Variablen übergibt und sie dann außerhalb der Funktion zu einer anderen Variablen hinzufügt

Ich versuche, die Koordinaten meines aktuellen Standortes zu erhalten. Holen Sie sich diese Koordinaten und übergeben Sie sie durch eine Funktion. Nach dem Übergeben der Koordinaten möchte ich sie in variable lan und lon speichern. Verwenden Sie diese Koordinaten, um sie zu einer URL-Variablen hinzuzufügen. Von dort möchte ich, dass die URL-Variable verwenden JSON zu analysieren und nutzen Namen zu finden, Stadt usw.

HTML:

<p>Click the button to get your coordinates.</p> 

    <button onclick="getLocation()">Try It</button> 
    <p id="geoLocal"></p> 

JavaScript:

var lon, lan; 
var geoLocal = document.getElementById("geoLocal"); 

//First part, I am creating the function to get the coordinates. 
function getLocation() { 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
} else { 
    geoLocal.innerHTML = "Geolocation is not supported by this browser."; 
    } 
}; 
//The first lines of code outputs the function and tells me the coordinates. 
//As it tells me these coordinates I want to save them to **lan** **and** lon variables. 

function showPosition(position) { 
geoLocal.innerHTML = "Latitude: " + position.coords.latitude + 
"<br>Longitude: " + position.coords.longitude; 
lan= position.coords.latitude; 
lon= position.coords.longitude; 
console.log(lan, lon); 
return (lan, lon); 

}; 

Oben würde ich wollen, dass es die lan und lon Variablenkoordinaten zurückgibt, damit ich sie zu den hinzufügen kann URL unten:

Ich zauberstab, um das lan und lon hinzuzufügen und sie am Ende von wUndergroundGeo unten hinzuzufügen. Momentan werden die Koordinaten hinzugefügt, aber im Wesentlichen die URL/Variable

var baseURL="http://api.wunderground.com/api/8a8af55ae16c8627/geolookup/q/" 
var addLanLon= baseURL+ lan + "," + lon; 
var wUndergroundGeo=addLanLon; 

sein die wUndergroundGeo die gleiche Variable unten ersetzen.

var wUndergroundGeo='http://api.wunderground.com/api/8a8af55ae16c8627/geolookup/q/34.4278,-119.7034111.json'; 
var wUndergroundSF= 'http://api.wunderground.com/api/8a8af55ae16c8627/conditions/q/CA/San_Francisco.json' 
var weather= new XMLHttpRequest(); 
weather.open("GET",wUndergroundGeo, false); 
weather.send(null); 

var myRequest= JSON.parse(weather.response); 
var cityLocal= "City location: "+ myRequest.location.city + "<br/>"; 
document.getElementById("weather").innerHTML= cityLocal 
+0

Was haben Sie bisher versucht? Wann wirst du die API anrufen? –

+0

Auf den ersten Blick schattieren Sie Ihre globalen Variablen, indem Sie sie in Ihrer 'showPosition'-Funktion neu deklarieren. –

+0

Das Ergebnis, das ich suche, ist, die Koordinaten zu erhalten und sie zu Variablen zu speichern, die ich später @CarlEdwards verwenden kann. – GauchoRoger

Antwort

0

Verwaltet, damit es funktioniert. Ich habe den Rest meiner Code-Zeilen in die Show-Position-Funktion verschoben.

var lon, lan; 
    var example='http://api.wunderground.com/api/8a8af55ae16c8627/geolookup/q/34.4277882,-119.7034209.json'; //Examples of completed coordinates 
var exampleCity="http://api.wunderground.com/api/8a8af55ae16c8627/conditions/q/CA/Santa_Barbara.json"; //example City. 
var geoLocal = document.getElementById("geoLocal"); 
var temp= document.getElementById("temp"); 
$(document).ready(function(){ 

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
} else { 
    geoLocal.innerHTML = "Geolocation is not supported by this browser."; 
} 
function showPosition(position) { 
var beforeURL= 'http://api.wunderground.com/api/8a8af55ae16c8627/'; 
var conditionsURL="conditions/q/"; 
var geoLookUp="geolookup/q/" 
var endURL=".json"; 
geoLocal.innerHTML = "Latitude: " + position.coords.latitude + 
"<br>Longitude: " + position.coords.longitude; 
lan= position.coords.latitude; 
lon= position.coords.longitude; 
wUndergroundGeo=beforeURL + geoLookUp+ lan + "," + lon + endURL; 
// return (position); 

`

var wUndergroundSF= 'http://api.wunderground.com/api/8a8af55ae16c8627/conditions/q/CA/San_Francisco.json' 
// var wUndergroundGeo= 'http://api.wunderground.com/api/8a8af55ae16c8627/geolookup/q/34.4278,-119.7034111.json'; 
var weather= new XMLHttpRequest(); 
weather.open("GET",wUndergroundGeo, false); 
weather.send(null); 

var myRequest= JSON.parse(weather.response); 
var cityLocal= "City location: "+ myRequest.location.city + "<br/>"; 
document.getElementById("weather").innerHTML= cityLocal 
var stateURL= myRequest.location.state + "/"; 

var cityURL=myRequest.location.city ; 
var cityURL=cityURL.replace(/ /gi,"_");//Replaces spaces of city with "_" so url will be valid. 


var weatherURL= beforeURL + conditionsURL +stateURL + cityURL + endURL; 
console.log("Weather", weatherURL) 

var weather2= new XMLHttpRequest(); 
weather2.open("GET", weatherURL, false); 
weather2.send(null); 

var secRequest=JSON.parse(weather2.response); 
var fTemp= "Fahrenheit: " + secRequest.current_observation.temp_f; 
console.log(fTemp); 

temp.innerHTML = FTemp; Rückgabe fTemp;

Verwandte Themen