×
OpenWeatherMap API: еще один погодный информер на Ruby on Rails (28 июнь 2017)

Возможно, любители и знатоки Joomla заинтересуются иным MVC-фреймворком, имя которому - Ruby on Rails?

Вопрос Геолокация по ip на вашем web-сайте. Sypex Geo

Больше
3 года 5 мес. назад - 3 года 5 мес. назад #1 от Aleksej
Aleksej создал эту тему: Геолокация по ip на вашем web-сайте. Sypex Geo
На страницах блога уже рассматривались различные варианты определения геолокации посетителя сайта; и сегодня, в этом топике - еще один способ определить месторасположение вашего визитера и поприветствовать его соответствующим образом... Maxmind и HTML5 GeoLocation API мы c вами уже использовали, настал черед Sypex Geo.

Sypex Geo – продукт для определение местоположения по IP-адресу, от создателей Sypex Dumper. Получив IP-адрес, Sypex Geo выдает информацию о местоположении посетителя – страну, регион, город, географические координаты.
Sypex Geo - распространяется по лицензии BSD, т. е. является абсолютно бесплатным.


Все на редкость несложно.
Качаем Sypex Geo API и Sypex Geo City (после распаковки получаем файлы SxGeo.php и SxGeoCity.dat соответственно), далее создаем третий файл index.php, содержащий следующие строчки кода:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
echo "Привет, {$city['city']}!<br/>";

Все три файла сохраняем в одной и той же директории на сервере; теперь, открыв в браузере index.php - вы получите приветствие для своего города... можно еще для пущей важности дописать простенькую конструкцию if/else, призванную известить посетителя, по прямой ли ссылке он к вам пришел, или откуда-то еще (с указанием странички-реферрала):

$a = $_SERVER['HTTP_REFERER'];
if (isset ($a))
{
echo "Вы пришли со страницы:" .$a;
}
else
{
echo "Вы попали на сайт напрямую.";
}

Вот, в принципе, и все. Файл index.php вы можете вызвать на любой страничке сайта (либо в HTML-модуле) следующим образом, указав путь к нему:

<?php
include('index.php');
?>

Продолжение темы в блоге
Последнее редактирование: 3 года 5 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 2 мес. назад - 3 года 2 мес. назад #2 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
Sypex Geo 2.2 (от 16.05.2014) требует внести некоторые (очень небольшие) корректировки в наш c вами код. Изменена структура массива, поэтому полная версия кода, о которой рассказывалось в статье Погода по ip. Умный информер выглядит теперь следующим образом:


<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
echo ($city['city']['name_en']);
echo "<br>";
echo ($city['country']['iso']);
echo "<br>";
echo "<br>";

$loc_array = array($city['city']['lat'],$city['city']['lon']);

$api_key="VASH_API_KEY"; 
$num_of_days=1; 

$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

//To add more conditions to the query, just lengthen the url string
$basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));

$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);

$ss = array();
foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{

$ss[$name1] = $val1;
}
}
echo '<img src="' . $xml->weather->weatherIconUrl . '"/>';
echo "<br>";
echo "<br>";
echo $ss["date"];
echo "<br>";
echo "Координаты {$ss["query"]}";
echo "<br>";
echo "Температура {$ss["temp_C"]} С";
echo "<br>";
echo "Мин. температура сегодня {$ss["tempMinC"]} С*";
echo "<br>";
echo "Макс. температура сегодня {$ss["tempMaxC"]} С*";
echo "<br>";
echo "Скорость ветра {$ss["windspeedKmph"]} м/сек";
echo "<br>";
echo "Направление ветра {$ss["winddirection"]}";
echo "<br>";
echo "Пасмурно {$ss["cloudcover"]}%";
echo "<br>";
echo "Давление {$ss["pressure"]} mb";
echo "<br>";
echo "Влажность {$ss["humidity"]}%";
echo "<br>";
echo "Видимость {$ss["visibility"]} км";
echo "<br>";
echo $ss["weatherDesc"];
echo "<br>";


Соответственно, код, подробно прокомментированный в статье Геолокация по ip. Sypex Geo - в актуальной ревизии принимает следующий, вполне рабочий, вид:


<!DOCTYPE html>
<html>
 <head>
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
?>
 <style type="text/css">
 html { height: 100% }
 body { height: 100%; margin: 0; padding: 0 }
 #map_canvas { height: 100% }
 </style>
 <script type="text/javascript"
 src="http://maps.googleapis.com/maps/api/js?key=VASH_API_KEY&sensor=false">
 </script>
 <script type="text/javascript">
 function initialize() {
 var mapOptions = { 
 center: new google.maps.LatLng("<?= $city['city']['lat']?>", "<?= $city['city']['lon'] ?>"),
 zoom: 8,
 mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 var map = new google.maps.Map(document.getElementById("map_canvas"),
 mapOptions);
 }
 </script>
 </head>
 <body onload="initialize()">
 <div id="map_canvas" style="width:640px; height:480px"></div>
 </body>
</html>
Последнее редактирование: 3 года 2 мес. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #3 от Прохожий
Прохожий ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
Простите, но оно при ближнем рассмотрении не выглядит так, как в статье про умный погодный информер ! :unsure:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #4 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
Прохожий, последняя версия погодного информера (с приветствием в зависимости от времени суток) может выглядеть примерно так:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);


$loc_array = array($city['city']['lat'],$city['city']['lon']);

$api_key="VASH_API_KEY"; 
$num_of_days=1; 

$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

//To add more conditions to the query, just lengthen the url string
$basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));


$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);



$ss = array();
foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{

$ss[$name1] = $val1;
}
}
?>

<style type="text/css">
.title_weather {
color: #006699;
   }
</style>
<div class="title_weather">
<script language="JavaScript">
var h=(new Date()).getHours();
if (h > 23 || h <7) document.write("<? echo 'Доброй ночи, ' . $city['city']['name_ru']; ?>");
if (h > 6 && h < 12) document.write("<? echo 'Доброе утро, ' . $city['city']['name_ru']; ?>");
if (h > 11 && h < 19) document.write("<? echo 'Добрый день, ' . $city['city']['name_ru']; ?>");
if (h > 18 && h < 24) document. write("<? echo 'Добрый вечер, ' . $city['city']['name_ru']; ?>"); 
</script>
</div>

<?
echo "<br>";
echo '<img src="' . $xml->weather->weatherIconUrl . '"/>';
echo "<br>";
echo "<br>";
echo $ss["date"];
echo "<br>";
echo "Координаты {$ss["query"]}";
echo "<br>";
echo ($city['city']['name_en']);
echo "<br>";
echo ($city['country']['iso']);
echo "<br>";
echo "<br>";
echo "<div style='color:#006699;'> У вас сегодня:</div>";
echo "Температура {$ss["temp_C"]} С";
echo "<br>";
echo "Мин. температура сегодня {$ss["tempMinC"]} С*";
echo "<br>";
echo "Макс. температура сегодня {$ss["tempMaxC"]} С*";
echo "<br>";
echo "Скорость ветра {$ss["windspeedKmph"]} м/сек";
echo "<br>";
echo "Направление ветра {$ss["winddirection"]}";
echo "<br>";
echo "Пасмурно {$ss["cloudcover"]}%";
echo "<br>";
echo "Давление {$ss["pressure"]} mb";
echo "<br>";
echo "Влажность {$ss["humidity"]}%";
echo "<br>";
echo "Видимость {$ss["visibility"]} км";
echo "<br>";
echo $ss["weatherDesc"];
echo "<br>";
?>
Спасибо сказали: Прохожий

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #5 от Прохожий
Прохожий ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
Я попробовал внести некоторые изменения в ваш код . Если сделать так (как показано ниже) - отображатеся не только карта Google для вашего ip-адреса, но и погода, состояние облачности и температура. ;)

<!doctype html>
<html>
  <head>
  <title>Weather Layer Google Maps JavaScript API v3</title>
  <?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
?>
    <script type="text/javascript"
        src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=weather"></script>
    <style type="text/css">
    body {
      font-family: Arial, sans-serif;
      font-size: 13px;
    }

    #map {
      width: 700px;
      height: 400px;
    }

    .options {
      overflow: hidden;
      margin: 10px 0 10px 0;
    }

    .option {
      float: left;
      width: 250px;
    }

    .heading {
      font-weight: bold;
    }
    </style>
    <script>
      var map, weatherLayer, cloudLayer;

      function initialize() {
        map = new google.maps.Map(document.getElementById('map'), {
          center: new google.maps.LatLng("<?= $city['city']['lat']?>", "<?= $city['city']['lon'] ?>"),
          zoom: 5,
          mapTypeId: google.maps.MapTypeId.SATELLITE
        });

        weatherLayer = new google.maps.weather.WeatherLayer();
        weatherLayer.setMap(map);

        cloudLayer = new google.maps.weather.CloudLayer();
        cloudLayer.setMap(map);
      }
      google.maps.event.addDomListener(window, 'load', initialize);

      function toggleClouds() {
        cloudLayer.setMap(cloudLayer.getMap() ? null : map);
      }

      function toggleIcons() {
        weatherLayer.setMap(weatherLayer.getMap() ? null : map);
      }

      function setLabelColor(color) {
        weatherLayer.setOptions({'labelColor': color});
      }

      function setTemperature(units) {
        weatherLayer.setOptions({'temperatureUnits': units});
      }

      function setWindSpeed(units) {
        weatherLayer.setOptions({'windSpeedUnits': units});
      }
    </script>
  </head>
  <body>
    <div id="map"></div>
    <div class="options">
      <div class="option">
        <div class="heading">Единицы температуры:</div>
        <input type="radio" name="temp" checked
            onclick="setTemperature(google.maps.weather.TemperatureUnit.CELSIUS)"></input>Цельсия
        <input type="radio" name="temp"
            onclick="setTemperature(google.maps.weather.TemperatureUnit.FAHRENHEIT)"></input>Фарингейта
      </div>
      <div class="option">
        <div class="heading">Единицы скорости ветра:</div>
        <input type="radio" name="wind"
            onclick="setWindSpeed(google.maps.weather.WindSpeedUnit.MILES_PER_HOUR)"></input>mph
        <input type="radio" name="wind"
            onclick="setWindSpeed(google.maps.weather.WindSpeedUnit.KILOMETERS_PER_HOUR)"></input>km/h
        <input type="radio" name="wind" checked
            onclick="setWindSpeed(google.maps.weather.WindSpeedUnit.METERS_PER_SECOND)"></input>m/s
      </div>
      <div class="option">
        <div class="heading">Цвет обозначений:</div>
        <input type="radio" name="color"
            onclick="setLabelColor(null)" checked></input>автоматически
        <input type="radio" name="color"
            onclick="setLabelColor(google.maps.weather.LabelColor.BLACK)"></input>черный
        <input type="radio" name="color"
            onclick="setLabelColor(google.maps.weather.LabelColor.WHITE)"></input>белый
      </div>
    </div>
    <div>
      <button onclick="toggleClouds()">Видимость слоя с облачностью</button>
      <button onclick="toggleIcons()">Видимость слоя с прогнозом погоды</button>
    </div>
  </body>
</html>

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #6 от serge
serge ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo

Прохожий пишет: Если сделать так (как показано ниже)...



Если сделать так, то по всей видимости, какое-то время оно у вас проработает. Но недолго, взгляните документацию для разработчиков Google:

Weather layer
Note: The Weather library - which includes the Weather and Cloud layers - has been deprecated as of June 4, 2014. This library will continue to work until June 4, 2015. After that date, the library will no longer be available.


А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад #7 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo

serge пишет:

Прохожий пишет: Если сделать так (как показано ниже)...


Если сделать так, то по всей видимости, какое-то время оно у вас проработает.


Прохожий, вы можете потестить вот этот скрипт , описанный в статье Погода по ip на Яндекс-картах . То же самое, в принципе, вид сбоку. Но есть надежда, что проработает чуть дольше, нежели погодные слои Google Map.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 6 мес. назад - 2 года 6 мес. назад #8 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
Вернемся к погодному информеру. Модуль Joomla jWeather_by_ip продолжает работать через старый API, но информер на сайте уже перешел на использование Free-Weather-API-V2. Изменена структура массива, добавлены кое-какие новые фичи. Судя по описанию, урезано количество "queries per day", во второй версии некоммерческого API это всего лишь 4,000 вместо 13,200 API первой версии. Но нам с вами, возможно, и хватит? - в самое ближайшее время постараюсь подчистить и подправить код информера, а пока что рабочий вариант примерно вот такой... подчеркиваю, на сегодняшний день работают обе версии API, вы свободны в выборе. Ничто не мешает вам использовать даже оба API.


<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);

$loc_array = array($city['city']['lat'],$city['city']['lon']);

$api_key="VASH_API_KEY"; 
$num_of_days=1; 

$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

//To add more conditions to the query, just lengthen the url string
$basicurl = sprintf('http://api.worldweatheronline.com/free/v2/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));

$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);

$ss = array();
foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{

$ss[$name1] = $val1;
}
}
?>

<style type="text/css">
.title_weather {
color: #006699;
   }
</style>
<div class="title_weather">
<script language="JavaScript">
var h=(new Date()).getHours();
if (h > 23 || h <7) document.write("<? echo 'Доброй ночи, ' . $city['city']['name_ru']; ?>");
if (h > 6 && h < 12) document.write("<? echo 'Доброе утро, ' . $city['city']['name_ru']; ?>");
if (h > 11 && h < 19) document.write("<? echo 'Добрый день, ' . $city['city']['name_ru']; ?>");
if (h > 18 && h < 24) document. write("<? echo 'Добрый вечер, ' . $city['city']['name_ru']; ?>"); 
</script>
</div>

<?
echo "<br>";
echo '<img src="' . $xml->current_condition->weatherIconUrl . '"/>';
echo "<br>";
echo "<br>";
echo $ss["date"];
echo "<br>";
echo "Координаты {$ss["query"]}";
echo "<br>";
echo ($city['city']['name_en']);
echo "<br>";
echo ($city['country']['iso']);
echo "<br>";
echo "<br>";
echo "<div style='color:#006699;'> У вас сегодня:</div>";
echo "Температура {$ss["temp_C"]} С";
echo "<br>";
echo "Мин. температура сегодня {$ss["mintempC"]} С*";
echo "<br>";
echo "Макс. температура сегодня {$ss["maxtempC"]} С*";
echo "<br>";
echo "Скорость ветра {$ss["windspeedKmph"]} км/час";
echo "<br>";
echo "Направление ветра {$ss["winddir16Point"]}";
echo "<br>";
echo "Пасмурно {$ss["cloudcover"]}%";
echo "<br>";
echo "Давление {$ss["pressure"]} mb";
echo "<br>";
echo "Влажность {$ss["humidity"]}%";
echo "<br>";
echo "Видимость {$ss["visibility"]} км";
echo "<br>";
echo $ss["weatherDesc"];
echo "<br>";
echo "<br>";
echo "Восход солнца {$ss['astronomy']->sunrise}";
echo "<br>";
echo "Закат солнца {$ss['astronomy']->sunset}";
echo "<br>";
echo "Восход луны {$ss['astronomy']->moonrise}";
echo "<br>";
echo "Закат луны {$ss['astronomy']->moonset}";
?>
Последнее редактирование: 2 года 6 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 года 5 мес. назад - 2 года 5 мес. назад #9 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo

Aleksej пишет: в самое ближайшее время постараюсь подчистить и подправить код информера...


Убрал ненужный foreach и всякие-разные "<br>": Эта версия информера работает уже с Free-Weather-API-V2:


<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
$loc_array = array($city['city']['lat'],$city['city']['lon']);
$api_key="VASH_API_KEY"; 
$num_of_days=1; 
$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

$basicurl = sprintf('http://api.worldweatheronline.com/free/v2/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));

$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);
?>

<style type="text/css">
.title_weather {
color: #006699;
   }
</style>
<div class="title_weather">
<script language="JavaScript">
var h=(new Date()).getHours();
if (h > 23 || h <7) document.write("<? echo 'Доброй ночи, ' . $city['city']['name_ru']; ?>");
if (h > 6 && h < 12) document.write("<? echo 'Доброе утро, ' . $city['city']['name_ru']; ?>");
if (h > 11 && h < 19) document.write("<? echo 'Добрый день, ' . $city['city']['name_ru']; ?>");
if (h > 18 && h < 24) document. write("<? echo 'Добрый вечер, ' . $city['city']['name_ru']; ?>"); 
</script>
</div>
<p> </p>
<div><?='<img src="' . $xml->current_condition->weatherIconUrl . '"/>';?></div>
<p> </p>
<div><?=($xml->weather->date);?></div>
<div><?='Координаты '. ($xml->request->query);?></div>
<div><?=($city['city']['name_en']);?></div>
<div><?=($city['country']['iso']);?></div>
<p> </p>
<?="<div style='color:#006699;'> У вас сегодня:</div>";?>
<div><?='Температура '. ($xml->current_condition->temp_C). ' °C';?></div>
<div><?='Мин. температура сегодня '. ($xml->weather->mintempC). ' °C';?></div>
<div><?='Макс. температура сегодня '. ($xml->weather->maxtempC). ' °C';?></div>
<div><?='Скорость ветра '. ($xml->current_condition->windspeedKmph). ' км/час';?></div>
<div><?='Направление ветра '. ($xml->current_condition->winddir16Point);?></div>
<div><?='Пасмурно '. ($xml->current_condition->cloudcover). ' %';?></div>
<div><?='Давление '. ($xml->current_condition->pressure). ' mb';?></div>
<div><?='Влажность '. ($xml->current_condition->humidity). ' %';?></div>
<div><?='Осадки '. ($xml->current_condition->precipMM). ' мм';?></div>
<div><?='Видимость на дорогах '. ($xml->current_condition->visibility). ' км';?></div>
<div><?=($xml->current_condition->weatherDesc);?></div>
<p> </p>
<div><?='Восход солнца '. ($xml->weather->astronomy->sunrise);?></div>
<div><?='Закат солнца '. ($xml->weather->astronomy->sunset);?></div>
<div><?='Восход луны '. ($xml->weather->astronomy->moonrise);?></div>
<div><?='Закат луны '. ($xml->weather->astronomy->moonset);?></div>
Последнее редактирование: 2 года 5 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 6 мес. назад - 1 год 6 мес. назад #10 от Aleksej
Aleksej ответил в теме Геолокация по ip на вашем web-сайте. Sypex Geo
А теперь пробуем REST API Sypex Geo , подробности по ссылке. Здесь же, как обычно, опубликован код, работа которого проиллюстрирована демкой на странице блога:


<?php
$ip = $_SERVER['REMOTE_ADDR'];
$url = 'http://api.sypexgeo.net/xml/'. $ip .'';
$xml1 = simplexml_load_string(file_get_contents($url));
$loc_array = array($xml1->ip->city->lat,$xml1->ip->city->lon);
$api_key="*************************************"; 
$num_of_days=1; 
$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);
$basicurl = sprintf('http://api2.worldweatheronline.com/free/v2/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));
$xml = simplexml_load_file($basicurl);
?>

<s-tyle type="text/css">
.informer {
font-size: 13px;
color: #000;
   }
</style>
<div class="informer">
<div><?='<img src="' . $xml->current_condition->weatherIconUrl . '"/>';?></div>
<p> </p>
<div><?=($xml->weather->date);?></div>
<div><?='Координаты '. ($xml->request->query);?></div>
<div><?=($xml1->ip->city->name_ru);?></div>
<div><?=($xml1->ip->country->name_ru);?></div>
<p> </p>
<?="<div style='color:#006699;'> У вас сегодня:</div>";?>
<div><?='Температура '. ($xml->current_condition->temp_C). ' °C';?></div>
<div><?='Мин. температура сегодня '. ($xml->weather->mintempC). ' °C';?></div>
<div><?='Макс. температура сегодня '. ($xml->weather->maxtempC). ' °C';?></div>
<div><?='Скорость ветра '. ($xml->current_condition->windspeedKmph). ' км/час';?></div>
<div><?='Направление ветра '. ($xml->current_condition->winddir16Point);?></div>
<div><?='Пасмурно '. ($xml->current_condition->cloudcover). ' %';?></div>
<div><?='Давление '. ($xml->current_condition->pressure). ' mb';?></div>
<div><?='Влажность '. ($xml->current_condition->humidity). ' %';?></div>
<div><?='Осадки '. ($xml->current_condition->precipMM). ' мм';?></div>
<div><?='Видимость на дорогах '. ($xml->current_condition->visibility). ' км';?></div>
<div><?=($xml->current_condition->weatherDesc);?></div>
<p> </p>
<div><?='Восход солнца '. ($xml->weather->astronomy->sunrise);?></div>
<div><?='Закат солнца '. ($xml->weather->astronomy->sunset);?></div>
<div><?='Восход луны '. ($xml->weather->astronomy->moonrise);?></div>
<div><?='Закат луны '. ($xml->weather->astronomy->moonset);?></div>
<p> </p>
<?="<div style='color:#006699;'> В ближайший час:</div>";?>
<div><?='Вероятность дождя '. ($xml->weather->hourly->chanceofrain). ' %';?></div>
<div><?='Вероятность снега '. ($xml->weather->hourly->chanceofsnow). ' %';?></div>
<div><?='Вероятность грозы '. ($xml->weather->hourly->chanceofthunder). ' %';?></div>
</div>


P.S. Вполне вероятно, что цикл там совершенно и не нужен; попробуйте как-то так:

$basicurl = sprintf('http://api2.worldweatheronline.com/free/v2/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $xml->ip->city->lat . ',' + $xml->ip->city->lon, intval($num_of_days));

или вот так:

$basicurl = sprintf('http://api2.worldweatheronline.com/free/v2/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, urlencode($xml->ip->city->lat . ',' + $xml->ip->city->lon), intval($num_of_days));
Последнее редактирование: 1 год 6 мес. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.