我使用的代码根据我插入的Yahoo API URL更改了我的wordpress网站的背景。反正有没有任何数据库自动显示访客天气?我虽然使用谷歌的API,但我是编程的新手,不知道如何将其实施到我的网站。请帮忙! 可以在此处查看代码:http://css-tricks.com/using-weather-data-to-change-your-websites-apperance-through-php-and-css/
请彻底,因为我是PHP的新手 谢谢!
答案 0 :(得分:6)
您需要一个API,用于将访问者IP地址映射到位置(ipapi.co),另一个用于获取该位置的天气预报(openweathermap.org)。下面的代码是针对php(服务器端):
# Part 1 (get latitude & longitude)
$ip = '1.2.3.4';
$api_1 = 'https://ipapi.co/' . $ip . '/latlong/';
$location = file_get_contents($api_1);
$point = explode(",", $location);
# Part 2 (get weather forecast)
$api_2 = 'http://api.openweathermap.org/data/2.5/weather?lat=' . $point[0] . '&lon=' . $point[1] . '&appid=API_KEY';
$weather = file_get_contents($api_2);
答案 1 :(得分:5)
这将使用IP2Coordinates service中的开源Data Science Toolkit从其IP地址获取用户的邮政编码。
那里有更准确的地理位置API,但是这个API绝对免费且易于使用。如果我在生产网站上开发这个,我会使用HTML5 Geolocation作为我的主要方法,并回退到更好的IP地理定位器,例如Max Mind。
请注意,这仅适用于您网站的美国用户。您可能应该将更详细的数据传递给其他Yahoo位置API以获取其中一个WOEID(或选择不同的天气API)。
这是给你的代码。将其放在示例代码中的<?php
标记之后。一旦确定它正常工作,请注释掉以print
开头的所有行。
//Get the user's IP address
$user_ip = $_SERVER['REMOTE_ADDR'];
//The Data Science Toolkit URL
$url = 'http://www.datasciencetoolkit.org/ip2coordinates/';
//Find the user's location from their IP.
//*** You need the get_data function from the sample code
$raw_geocode = json_decode( get_data( $url . $user_ip) );
//Check if the user is in the US
if ('US' === $raw_geocode->$user_ip->country_code) {
//If yes, store their zip code in a variable, and print it
$zip_code = $raw_geocode->$user_ip->postal_code;
printf('<p>Your zip code is: %s</p>', $raw_geocode->$user_ip->postal_code);
} else {
//If the user isn't in the US, set a sip code that will work.
$zip_code = '97211';
//and print an error
printf('<p>Sorry, this app does not work in %s.</p>', $raw_geocode->$user_ip->country_name);
}
//Print the raw data for debugging.
printf('<pre>%s</pre>', print_r($raw_geocode, true));
现在将示例代码中以$data =
开头的行更改为:
$data = get_data("http://weather.yahooapis.com/forecastrss?p={$zip_code}&u=f");
答案 2 :(得分:1)
使用Javascript:
<script type="text/javascript" src="jquery.simpleopenweather.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.get("http://ipinfo.io", function (response) {
$("#weather").attr('data-simpleopenweather-city', response.city).simpleopenweather({template: '<h2>'+'{{temperature}} '+'°'+'C'+'<h2>', units: 'metric'});
}, "jsonp");
});
</script>
HTML:
<div id="weather" class="simpleopenweather" data-simpleopenweather-city=""></div>
它将显示类似于6.3ºC
的内容答案 3 :(得分:0)
***You can get data about the location with use third-party API. for example:http://ip-api.com/.**
You get your location weather data from OpenWeatherMap service using the ip-api. its help you to get visitor location weather.*
var getIP = 'http://ip-api.com/json/';
var openWeatherMap = 'http://api.openweathermap.org/data/2.5/weather'
$.getJSON(getIP).done(function(location) {
$.getJSON(openWeatherMap, {
lat: location.lat,
lon: location.lon,
units: 'metric',
APPID: 'Your-Openweather-Apikey'
}).done(function(weather) {
$('#weather').append(weather.main.temp);
console.log(weather);
})
})
HTML:
<div id="weather"> </div>
它显示您当前的天气温度。