API погоды, как объединить параметры поиска для более подробного определения местоположения (город, штат, страна и т. Д.), Чтобы предотвратить путаницу в местоположении

Я часто использую api openweathermap.org для игры с новыми платформами, и я столкнулся с той же проблемой: не могу определить достаточно конкретный запрос для поиска определенных городов.

API легко работает для больших городов, таких как Лондон, Сан-Франциско и т. Д., Но у меня проблемы с небольшими городами или городами с общими названиями. Например, в Калифорнии есть город под названием Лафайет, но в Луизиане есть город побольше, также называемый Лафайет.

Запрос GET на этот URL вернет погоду для Луизианы http://api.openweathermap.org/data/2.5/find?q=Lafayette&units=imperial&APPID= + api_key

и запрос GET на этот URL (с использованием ', ca') вернет погоду в совершенно другом месте (с идентификатором города 0) http://api.openweathermap.org/data/2.5/find?q=Lafayette,ca&units=imperial&APPID= + api_key

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


person jmancherje    schedule 25.12.2015    source источник


Ответы (1)


Если использование города не работает напрямую, есть два других варианта. Один использует широту и долготу, а другой - идентификатор.

Метод широты / долготы:

Используйте карты Google, чтобы найти город, который вам нужен. Щелкните правой кнопкой мыши где-нибудь в центре и выберите What's here. Вам будут предоставлены координаты широты и долготы, которые можно использовать следующим образом:

http://api.openweathermap.org/data/2.5/find?lat=37.9&lon=-122.1&units=imperial&APPID=62908047dc0cdba22f4915a3a79658fa

Метод определения города:

Я показываю этот вариант вторым, потому что вы хотите получить приблизительное значение широты / долготы, чтобы убедиться, что вы нашли правильный идентификатор. Посмотрите на http://openweathermap.org/help/city_list.txt и найдите город ( используя Ctrl-F). Шагайте вперед, пока не найдете тот, который имеет аналогичные координаты широты и долготы, например:

5364226 Lafayette   37.885761   -122.118019 US

Итак, теперь URL-адрес для использования

http://api.openweathermap.org/data/2.5/weather?id=5364226& APPID=62908047dc0cdba22f4915a3a79658fa

Примечание. Я обнаружил, что при использовании метода ID вы получаете сообщение об ошибке, если используете find? В URL. Если использовать погоду? Затем он возвращает действительные данные для этого города.

person Trevor    schedule 26.12.2015