2017-10-16 7 views
0

Ich werde versuchen, schnell auf die Frage zu sein. Ich möchte eine Wettervorhersage für Real Estate verwenden, mit diesem codepenSprache auf Openweather API ändern

var weatherData = { 
 
    city: document.querySelector ("#city"), 
 
    weather: document.querySelector ("#weather"), 
 
    temperature: document.querySelector("#temperature"), 
 
    temperatureValue: 0, 
 
    units: "°C" 
 
    
 
}; 
 

 
function roundTemperature(temperature){ 
 
\t \t \t temperature = temperature.toFixed(1); 
 
\t \t \t return temperature; 
 
\t \t } 
 

 
function switchUnits(){ 
 
    
 
    if (weatherData.units == "°C") { 
 
    weatherData.temperatureValue = roundTemperature(weatherData.temperatureValue * 9/5 + 32); 
 
    weatherData.units = "°F"; 
 
    
 
} else { 
 
    weatherData.temperatureValue = roundTemperature ((weatherData.temperatureValue -32) * 5/9); 
 
    weatherData.units = "°C"; 
 
} 
 

 
    weatherData.temperature.innerHTML = weatherData.temperatureValue + weatherData.units + " "; 
 
} 
 

 

 
function getLocationAndWeather(){ 
 
    if (window.XMLHttpRequest){ 
 
    var xhr = new XMLHttpRequest(); 
 
    xhr.addEventListener("load", function() { 
 
     var response = JSON.parse(xhr.responseText); 
 

 
     console.log(response); 
 
     var position = { 
 
     latitude: response.latitude, 
 
     longitude: response.longitude 
 
     }; 
 
     var cityName = response.city; 
 

 
     var weatherSimpleDescription = response.weather.simple; 
 
     var weatherDescription = response.weather.description; 
 
     var weatherTemperature = roundTemperature(response.weather.temperature); 
 

 
     weatherData.temperatureValue = weatherTemperature; 
 

 
     loadBackground(position.latitude, position.longitude, weatherSimpleDescription); 
 
     weatherData.city.innerHTML = cityName; 
 
     weatherData.weather.innerHTML = ", " + weatherDescription; 
 
     weatherData.temperature.innerHTML = weatherTemperature + weatherData.units; 
 
    }, false); 
 

 
    xhr.addEventListener("error", function(err){ 
 
     alert("Could not complete the request"); 
 
    }, false); 
 

 
    xhr.open("GET", "https://fourtonfish.com/tutorials/weather-web-app/getlocationandweather.php?owapikey=e2db5b0453a25a492e87ad8b03046a7c&units=metric", true); 
 
    xhr.send(); 
 
    } 
 
    else{ 
 
    alert("Unable to fetch the location and weather data."); 
 
    }   
 
} 
 

 

 
function loadBackground(lat, lon, weatherTag) { 
 
    var script_element = document.createElement('script'); 
 

 
    script_element.src = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=1452866c8cea54acd0075022ef573a07&lat=" + lat + "&lon=" + lon + "&accuracy=1&tags=" + weatherTag + "&sort=relevance&extras=url_l&format=json"; 
 
    
 
    document.getElementsByTagName('head')[0].appendChild(script_element); 
 
} 
 

 
function jsonFlickrApi(data){ 
 
    if (data.photos.pages > 0){ 
 
    //var randomPhotoId = parseInt(data.photos.total); 
 
    var photo = data.photos.photo[Math.floor(Math.random()*parseInt(data.photos.photo.length))]; 
 
    document.querySelector("body").style.backgroundImage = "url('" + photo.url_l + "')"; 
 
    document.querySelector("#image-source").setAttribute("href", "http://www.flickr.com/photos/" + photo.owner + "/" + photo.id); 
 
    } 
 
    else{ 
 
    document.querySelector("body").style.backgroundImage = "url('https://fourtonfish.com/tutorials/weather-web-app/images/default.jpg')"; 
 
    document.querySelector("#image-source").setAttribute("href", "https://www.flickr.com/photos/superfamous/310185523/sizes/o/"); 
 
    } 
 
} 
 

 
getLocationAndWeather();
body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
    font-family:Arial, sans-serif; 
 
    font-size: 2em; 
 
    text-shadow: 0 0 10px #000; 
 
    color: #fff; 
 
    background: #888; 
 
    bacground-repeat: no-repeat; 
 
    background-attachment: fixed; 
 
    background-size: cover; 
 
} 
 

 
section { 
 

 
    min-height: 100%; 
 
} 
 

 
h1 { 
 
    font-size: 2em; 
 
    padding: 0 0.3em; 
 
    line-height: 1em; 
 
    
 
} 
 

 
p { 
 
    padding: 0 1em; 
 
} 
 

 
a{ 
 
    color: #fff; 
 
} 
 

 
footer { 
 
    position: absolute; 
 
    bottom: 0; 
 
    font-size: 0.5em; 
 
} 
 

 
#temperature { 
 
    text-decoration: none; 
 
    border-bottom: 0.05em dotted white; 
 
}
<section> 
 
    <h1 id= "city">Weather Web App</h1> 
 
    <p> <a id="temperature" href="#" onclick="switchUnits(); return false;" title ="Click to switch between metric and impreial units"></a><span id = "weather"> by Shazam (tutorial from @fourtonfish)</p> 
 
</section> 
 

 
<footer> 
 
    <p>Powered by <a href="http://flickr.com/services/api/">Flickr</a> and <a href="http://openweathermap.org">Openweathermap.org</a>. 
 
    
 
    Created by <a href="https://twitter.com/steelcitycoach">@steelcitycoach</a>. <a id="image-source" href="#">Image source</a>.</p> 
 
    
 
</footer>

unterschiedliche Ergebnisse mit PHP, wie der Adidas Ultraboost TR Website zu generieren ich sah ..

Das Problem : Ich kann die "Beschreibung" nicht auf Portugiesisch (pt-br) ändern. Ich habe bereits die OpenWeather-Dokumentation gesehen, die mir befahl, "& lang = pt" in die URL aufzunehmen, aber es hat nicht funktioniert. Um das Problem zu vervollständigen, ist dies die Seite des Besitzers dieses Codes, aber ich habe keinen Zugang zu this page, von dem ich annehme, dass ich einige Einstellungen ändern könnte. Wenn Sie den Code-Schnipsel, so ist dies, was ich auf die Antwort ändern können:

"Wetter": { "simple": "Clear", -> "description": "clear sky", < -

So gibt zwei Möglichkeiten, ich denke, dass Sie mir helfen könnten:

  1. Sagen Sie mir einen Weg „clear sky“ zu ändern „céu LiMPO“ oder das Portguese entspricht, dass ohne die Notwendigkeit von pHP zu ändern Datei:

  2. Giv e mir ein Licht, um die Antwort mit PHP zu ändern. Beispiel: Wenn ich die Antwort "Klarer Himmel" erhalte, ändere ich sie in "ceu lumpo" oder was immer ich will.

Könnten Sie mir bitte helfen?

+0

Die Openweathermap API scheint CORS aktiviert werden, so dass Sie die Anfrage an ihn selbst direkt von Ihrem clientseitige JavaScript machen kann. Es gibt keine Notwendigkeit, über dieses serverseitige Skript zu gehen - das anscheinend nur als Tutorial angeboten wird, also würde die Verwendung auf einer Produktionsstätte für ein kommerzielles (?) Immobiliengeschäft Verkehr von jemand anderem effektiv stehlen, weil Jede Anfrage eines Besuchers an Ihre Website würde auch eine Anfrage an ihre Website bedeuten. – CBroe

+0

Ich bin mir dessen bewusst, aber ich teste es nur. Wenn es so funktioniert, wie ich es erwarte, werde ich eine Agentur beauftragen, es für das Unternehmen, für das ich arbeite, professionell zu entwickeln. Dank dafür! –

+0

Nun, ich denke, für den Moment könntest du es vortäuschen (wenn das dir hilft, weiter zu entwickeln, und es nicht in der Produktion oder in einem größeren Maßstab verwendet wird), weil es beim Betrachten dieser Funktion nur drei vergeht bestimmte Parameter auf der API, aber nicht die richtige URL-Codierung auf sie anwenden - so, während das Hinzufügen von "& lang = pt" wird nicht funktionieren, können Sie das als Teil des Wertes eines der anderen Parameter, wenn Sie URL schmuggeln -encodieren Sie die '&' an Ihrem Ende: https://fourtonfish.com/tutorials/weather-web-app/getlocationandweather.php?owapikey=e2db5b0453a25a492e87ad8b03046a7c&units=metric%26lang=pt – CBroe

Antwort

0

Sie könnten einen Übersetzungsdienst verwenden, um die Beschreibung in die gewünschte Sprache zu übersetzen.

Zum Beispiel, hier ist eine JavaScript-Funktion, die einen String, ruft die Google Translate API und gibt die übersetzte Zeichenfolge in Portugiesisch:

function translateDescription(description) { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.open("GET", "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=pt&dt=t&q=" + description, false); 
    xhttp.send(); 
    var response = JSON.parse(xhttp.responseText); 
    return response[0][0][0]; 
} 

ich gegabelt und modifizierte Ihre CodePen ein wenig, dies zu tun. Grundsätzlich, in Zeile 46, wo Sie var weatherDescription haben, rufe ich die translateDescription-Funktion oben mit der Beschreibung Zeichenfolge von der API OpenWeatherMap zurückgegeben.

CodePen: https://codepen.io/anon/pen/GMwWoR

+0

SIE. SIND. TOLLE. Arbeitete wie ein Zauber, danke !!!!!! –