Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Прогноз погоды (https://javascript.ru/forum/project/81557-prognoz-pogody.html)

ALFRED450 15.12.2020 09:15

Цитата:

Сообщение от laimas (Сообщение 531749)
А зачем столько лишнего писать, что используется только раз?

$show_weather=$weather->main->temp;
$sw_weather = $w_weather. "°C";
$w_weather = ceil($show_weather);


и может все-таки round? И сразу при выводе, без создания не понятно для чего промежуточных переменных.

round($weather->main->temp) . '°C'

убирал зачеркнутое и вставил ваше, не показало температуру
а переменные мне нужны будут в дальнейшей прорисовке результата в графический формат
как ваш пример реализовать покажите целиком:
$show_weather=$weather->main->temp;
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y, H:i");
$cityname = $weather->name;
$wind=$weather->wind->speed." м/с";
$humidity=$weather->main->humidity."%";
$w_weather = round($show_weather);
$sw_weather = $w_weather. "°C";


echo $today."<br />".
$cityname."<br />".
"Влажность: ".$humidity."<br />".
"Ветер: ".$wind."<br />".
$sw_weather."<br />
<img src='http://openweathermap.org/img/wn/".$icon."' />";

ALFRED450 15.12.2020 09:21

подскажите как ссылку на на путь превратить в переменную правильно, чтоб использовать $sw_weather и $url_icon
чтоб в ряд их выстроить

ALFRED450 15.12.2020 09:24

понимаю, что пытаюсь хлебать щи не умея пользоваться ложкой)), но в полтиник трудно дается, то чему не учили, но интересно зараза ))

laimas 15.12.2020 09:33

Ну если создание переменной, это значение из объекта плюс добавление строки, и для использования не только при выводе, тогда да, это оправдано.

Цитата:

Сообщение от ALFRED450
убирал зачеркнутое и вставил ваше, не показало температуру

Выводите вы просто совсем не то. Даже если создание переменных для неоднократного использования, то какой смысл получить сначала:

$show_weather = $weather->main->temp;

затем

$w_weather = ceil($show_weather);

затем

$sw_weather = $w_weather. "°C";

чтобы вывести

$sw_weather."<br />

это что за баталии такие? Если нужна температура для вывода в строку и для графики, то почему не

$weather = round($weather->main->temp) . '°C';

и вывод с строке

. $weather . "<br />

и где-то для графики $weather. Прочтите еще раз и внимательно о ceil(), это ли нужно использовать?

Если вывод, это конкатенация строк и переменных, то строки нужно заключать в одинарные кавычки, а не в двойные, потому как в РНР вывод в одинарных и двойных, это различие, и вы просто заставляете парсер производить дополнительный бессмысленный разбор строк. Читайте документацию.

PS. Кстати, температура отдается за определенную дату, которая указана в объекте, то есть текущая дата не обязательно может совпадать с датой за которую получены данные. А значит не

dete(format)

а

date(format, $weather->dt)

ALFRED450 15.12.2020 09:46

Цитата:

Сообщение от laimas (Сообщение 531753)
Ну если создание переменной, это значение из объекта плюс добавление строки, и для использования не только при выводе, тогда да, это оправдано.



Выводите вы просто совсем не то. Даже если создание переменных для неоднократного использования, то какой смысл получить сначала:

$show_weather = $weather->main->temp;

затем

$w_weather = ceil($show_weather);

затем

$sw_weather = $w_weather. "°C";

чтобы вывести

$sw_weather."<br />

это что за баталии такие? Если нужна температура для вывода в строку и для графики, то почему не

$weather = round($weather->main->temp) . '°C';

и вывод с строке

. $weather . "<br />

и где-то для графики $weather. Прочтите еще раз и внимательно о ceil(), это ли нужно использовать?

Если вывод, это конкатенация строк и переменных, то строки нужно заключать в одинарные кавычки, а не в двойные, потому как в РНР вывод в одинарных и двойных, это различие, и вы просто заставляете парсер производить дополнительный бессмысленный разбор строк. Читайте документацию.

PS. Кстати, температура отдается за определенную дату, которая указана в объекте, то есть текущая дата не обязательно может совпадать с датой за которую получены данные. А значит не

dete(format)

а

date(format, $weather->dt)

спасибо, сократил, но все же:
$show_weather = round($weather->main->temp) . '°C';
*!*
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y, H:i");
$cityname = $weather->name;
$wind=$weather->wind->speed." м/с";
$humidity=$weather->main->humidity."%";
*/!*

echo $today."<br />".
$cityname."<br />".
"Влажность: ".$humidity."<br />".
"Ветер: ".$wind."<br />".
$show_weather."<br />
<img src='http://openweathermap.org/img/wn/".$icon."' />";

оставил переменную $show_weather т.к. $weather нужен для получения других данных и если использовать, другие данные ломаются

laimas 15.12.2020 10:06

Обращайтесь к документации своей CMS, а я же не запоминаю наизусть все, с чем когда либо сталкивался.

ALFRED450 15.12.2020 21:07

Прошу помочь еще в одной ситуации
имея переменую $show_weather получаем погоду
и функцией ниже объединяем текст с изображением
if($show_weather){
	$draw->setFont(BASEPATH."/font/".$font_weather);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($weather_font_size);
    $draw->setFillColor("rgb(".$weather_font_color.")");
    $bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, mb_strtoupper($show_weather.' ', 'UTF-8'));
}

вариант работает

Не разобрался тут:

$url_icon = '<img src="http://openweathermap.org/img/wn/'.$icon.' "/>';

как с переменной $url_icon которая = http://openweathermap.org/img/wn/13n.png

сделать подобную функцию, для объединения одного изображения с другим

*!*
if($url_icon){
    $bg->compositeImage($url_icon, Imagick::COMPOSITE_DEFAULT, $weather_icon_pixel_x, $weather_icon_pixel_y);
}
*/!*

laimas 15.12.2020 22:37

Цитата:

Сообщение от ALFRED450
<img src="http://openweathermap.org/img/wn/'.$icon.' "/>

Это не url, и прежде чем работать с изображениями, его нужно открыть как ресурс. Открывайте и работайте.

ALFRED450 15.12.2020 23:08

Цитата:

Сообщение от laimas (Сообщение 531771)
Это не url, и прежде чем работать с изображениями, его нужно открыть как ресурс. Открывайте и работайте.

подсказку в виде примера можно? в какую сторону двигаться

laimas 15.12.2020 23:26

Цитата:

Сообщение от ALFRED450
подсказку в виде примера можно?

Ну какая еще подсказка нужна? URL изображения известен? Загружайте его на сервер, затем открывайте его в ImageMagick, работайте с ним.


Часовой пояс GMT +3, время: 22:22.