Технические требования

Общие положения
Медийная реклама
Витрины
Rich media
Дополнительные возможности
Мобильные версии сайтов
Мобильные приложения

Подгрузка погодного виджета в баннер с учетом ГЕО

В баннеры на «Рамблере» можно подгружать актуальный прогноз погоды (по данным «Рамблер-Погоды») с учетом местонахождения пользователя — погода показывается в соответствии с местоположением пользователя. Данные о местонахождении пользователя берутся из «Рамблер-Геобазы», а также из профайла пользователя, если он задал местонахождение явно, через форму на сайте.

Описание работы

По get-запросу на http://api.rambler.ru/weather/informer вам вернется JSON-файл с погодой на завтра, на день, на ночь и на момент запроса для текущего местоположения.

Рассмотрим случай обработки. Если загрузить и обработать JSON (к примеру, используя библиотеку as3corelib и метод JSON.decode() в ней), а потом сохранить его в переменную data, то путь к данным на момент запроса будет выглядеть так: data.cities.now. Данные для сегодняшнего дня находятся в объекте day, для сегодняшней ночи — в объекте night, для завтрашнего дня — в объекте tommorow на том же уровне иерархии, что и now.

В этих объектах содержатся следующие поля:

  • wind_speed — скорость ветра;
  • phenomenon — общее состояние погоды;
  • temp — температура воздуха;
  • image — картинка для данного общего состояния погоды (можно посмотреть таблицу соответствия Mobile_weather_icons.doc);
  • humidity — влажность воздуха;
  • date — для какого времени актуален прогноз;
  • wind_direction — направление ветра.

Название города можно будет прочитать в поле data.cities. city.name.

В случае если в запросе присутствует параметр content_type=xml, например http://api.rambler.ru/weather/informer?content_type=xml, то ответ с сервера будет такой же, только в формате xml.

Иерархия данных в xml соответствует иерархии для JSON.

Шаблон flash

Пример работающей флешки с подгрузкой погодного виджета: http://images.rambler.ru/upl/ad/2011/09/01/WeatherXML.swf

Исходники:

  • textlayout_1.0.0.595.swz
  • WeatherXML.fla

Скачать исходники

AS:

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;

function end (e) {
var newXML:XML = new XML(lod.data);
var speed:String = newXML.wind_speed;
text_obj.appendText('Город: ' + newXML.cities.city.name + '\n');
text_obj.appendText('Погода: ' + newXML.cities.now.phenomenon + '\n');
text_obj.appendText('Температура: ' + newXML.cities.now.temp + '\n');
text_obj.appendText('Направление ветра: ' + newXML.cities.now.wind_direction + ' \n');
text_obj.appendText('Скорость ветра: ' + newXML.cities.now.wind_speed + ' м/с \n');
text_obj.appendText('Влажность воздуха: ' + newXML.cities.now.humidity + ' %\n');
}

var lod:URLLoader = new URLLoader();
lod.load(new URLRequest('http://api.rambler.ru/weather/informer?content_type=xml'));
lod.addEventListener(Event.COMPLETE, end);
lod.addEventListener(IOErrorEvent.IO_ERROR, function (e)
{text_obj.appendText('\nIO_ERROR')});
lod.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (e)
{text_obj.appendText('\nSECURITY_ERROR')});