Рубрики
Без рубрики

Строительство приложений погоды

Ayo Isaiah Создание приложении погоды с геолокацией и неделями APISLAST я решал бесплатный код Code Camp Show, который включал в себя создание приложения, которое отображало погоду, где бы пользователь не было. Мне пришлось реализовать следующие истории пользователей: пользователь может просматривать

Автор оригинала: FreeCodeCamp Community Member.

Айо Исаия

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

Я должен был реализовать следующие пользовательские истории:

  • Пользователь может просмотреть погоду в его/ее текущем месте.
  • Пользователь может переключить температуру (по Цельсию или Фаренгейту).
  • Значок погоды или фоновое изображение будут изменяться в зависимости от погодных условий.

Я решил взять его немного дальше, добавив еще одну историю пользователя

  • Пользователь может искать информацию о погоде других мест.

Дизайн

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

Придумать с окончательной макетом было немного сложно, но я обнаружил, что это полезно решить элементы, которые я хотел отображать для пользователя и построить оттуда.

Удерживая все возможное, была целью здесь. Я решил показать только описание температуры и погоды в дополнение к местному времени.

Мне также понравилась анимированная погода значок в Пример проекта И чувствовал, что это было лучшее представление нынешней погоды, чем фоновое изображение, поэтому я хотел реализовать это в мое приложение.

Как обычно, я поставил все в моем Рабочий процесс Отказ

Настройка всего, было довольно прямо прямо, кроме поиска подходящего анимированного набора значка. Я должен был найти немного, прежде чем нашел Скайконы что я оказал использование.

С другой стороны, я боролся с нахождением хорошей цветовой схемы для приложения, и это то, с чем я почти всегда борюсь. Я экспериментировал с разными комбинациями, прежде чем посадить последний продукт.

Логика

Посмотрев на пример ответа API от Открыть погоду Я подумал, что мне нужно будет получить долготу и широту пользователя, чтобы иметь возможность подавать информацию о погоде на странице нагрузки.

Самый простой способ сделать это было использовать API геолокации HTML5, который был довольно простым, он уже был покрыт его в разделе JSON и API на раздел учебной программы.

Я сохранил возвращенные значения в уже объявленных переменных и использовал их, чтобы сделать запрос AJAX.

if (navigator.geolocation) {
    //Return the user's longitude and latitude on page load using HTML5 geolocation API
    window.onload = function () {    var currentPosition;    function getCurrentLocation (position) {        currentPosition = position;        latitude = currentPosition.coords.latitude;        longitude = currentPosition.coords.longitude;
        //AJAX request
        $.getJSON("http://api.openweathermap.org/data/2.5/weather?lat=" + latitude + "&lon=" + longitude + "&APPID=******************", function (data) {            var rawJson = JSON.stringify(data);            var json = JSON.parse(rawJson);            updateWeather(json); //Update Weather parameters        });    }
    navigator.geolocation.getCurrentPosition(getCurrentLocation);
    };

API открытой погоды дал мне способ обновить местоположение, температуру и погода, но мне все еще нужно было найти способ обновления местного времени. После небольшого поиска я нашел еще один API на Geonames.org который позаботился об этом.

$.getJSON('http://api.geonames.org/timezoneJSON?lat=' + latitude + '&lng=' + longitude + '&username=ayoisaiah', function(timezone) {            var rawTimeZone = JSON.stringify(timezone);            var parsedTimeZone = JSON.parse(rawTimeZone);            var dateTime = parsedTimeZone.time;            timeFull = dateTime.substr(11);            $(".local-time").html(timeFull); //Update local time            timeHour = dateTime.substr(-5, 2);    });

Последнее, что я сделал, должен был обновить значок погоды в условиях в месте расположения пользователя или в интересах города. Я решил хороший способ сделать это, чтобы проверить описание погоды и изменить значок на основе этого.

Поэтому я рассмотрел несколько возможных сценариев, таких как чистое небо, облако, снег, солнечный, дождь E.t.c и написал кучу условных утверждений, чтобы проверить, если описание погоды содержит одно из ключевых слов, а затем обновить значок погоды.

//Update Weather animation based on the returned weather description
    var weather = json.weather[0].description;
    if(weather.indexOf("rain") >= 0) {        skycons.set("animated-icon", Skycons.RAIN);    }
    else if (weather.indexOf("sunny") >= 0) {        skycons.set("animated-icon", Skycons.CLEAR_DAY);    }

Я обнаружил, через различные тесты, что этот метод не является на 100% надежно, но он работал достаточно хорошо для меня, чтобы придерживаться этого.

Вы можете оформить заказ полный код и эффекты на Кодепен Отказ

Ключ на вынос

Моя основная вынос от этого проекта состоит в том, что я узнал, как получить доступ к каждой части возвращенных данных JSON из ответа API и использовать ее по-разному. Хотя моя методология нуждается в одном переработке, это обязательно поправиться с большим количеством практики.

Что дальше…

Следующий проект для меня – Wikipedia Viewer App Отказ Я уже на полпути, как я пишу эту статью, поэтому она должна быть завершена в четверг не позднее.

Если вы хотите протянуть или связаться со мной, вы можете найти меня на Твиттер или же напишите мне Отказ Спасибо за прочтение.