Получить WOEID по названию города?

Я использовал Google Weather API для получения информации о погоде, но, видимо, Google остановил свою службу. И сейчас я пытаюсь перейти на Yahoo Weather API.

var WOEID = 2502265;  //random WOEID
$.ajax({
    url: "http://weather.yahooapis.com/forecastjson?w=" + WOEID + "&u=c",
    dataType: 'json',
    success: function(data) {
        console.log(data);
    }
});

Однако есть ли способ получить WOEID только с помощью JavaScript? Потому что тогда я могу просто сделать

http://www.google.com/ig/api?hl=en&weather=NYC

и это все.

На странице API погоды Yahoo говорится:

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

Но я хочу получить его с помощью JavaScript, а не вручную заходить на Weather.yahoo.com и узнавать WOEID.

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


person Derek 朕會功夫    schedule 15.09.2012    source источник


Ответы (4)


Хорошо, я узнал из ваших комментариев, что именно вы хотите

У вас есть название места, и вы хотите получить WOEID этого названия места, используя вызовы javascript ajax.

URL-адрес для получения, который не определен нигде, где вы должны использовать службу GeoPlanet для преобразования места в WOEID.

http://where.yahooapis.com/v1/places.q('Place name')?appid=[yourappidhere] 

ИЛИ вы должны использовать Direct YQL что-то вроде этого (используйте процентное кодирование в URL-адресе для названия вашего города) соответствующим образом и попробуйте выполнить вызов ajax для этого

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Place%20name%22&format=xml
person Aravind.HU    schedule 15.09.2012
comment
Извините, я вставил неправильный URL-адрес ранее, правильный URL-адрес находится в ответе - person Aravind.HU; 15.09.2012
comment
Лучший способ — получить данные непосредственно в json, чтобы их было легче обрабатывать, сделав format=json. Как- query.yahooapis.com/v1/public/yql?q= select%20*%20from%20geo.places%20where%20text%3D%22Place%20name%22&format=json - person Anant; 14.09.2016

вы также можете получить его на Yahoo http://developer.yahoo.com/geo/geoplanet/guide/concepts.html

Справочник по API

person Rafay    schedule 15.09.2012
comment
Хм, вы можете создать пример или несколько кодов? Потому что я действительно не знаю, как использовать его API... - person Derek 朕會功夫; 15.09.2012
comment
Просто используйте этот URI where.yahooapis.com/v1/place/2507854? appid=[вашеприложениездесь] - person Aravind.HU; 15.09.2012
comment
да точно так же вам нужно сделать вызов ajax для этого URL-адреса, и он вернет WOEID в формате JSON - person Aravind.HU; 15.09.2012
comment
@aravind.udayashankara Как мне использовать этот URL-адрес, если у меня нет WOEID? - person Derek 朕會功夫; 15.09.2012

ОБНОВЛЕНИЕ ОТ ДЕКАБРЯ 2018 ГОДА:

Обязательно используйте метод Direct YQL, упомянутый выше @aravind.udayashankara. Я какое-то время возился с API yboss только для того, чтобы увидеть, что его поддержка прекращена (https://developer.yahoo.com/boss/search/), хотя у Yahoo до сих пор есть много документации по нему в Интернете.

Вместо этого попробуйте следующее (он работает за пределами страницы, но в URL-адресе есть код).

yourLocation = "location" (zip, city name, etc.)

urlQuery = "https://query.yahooapis.com/v1/public/yql?q=select+*+from+geo.places+where+text%3D%22" + yourLocation + "%22&format=json"
person Colonel_Old    schedule 07.12.2018

Чтобы получить Woeid по названию города

using (WebClient wc = new WebClient())
{
string results = wc.DownloadString("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22" + CityName + "%22&format=xml");
}

Дополнительные сведения см. в этой статье

person AAli    schedule 19.04.2017