Вопрос

я некоторое время искал, но ничего не нашел, что было бы похоже на мою проблему.

например, я пытаюсь использовать YAHOO Weather API: http://weather .yahooapis.com/forecastrss?w=4097

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

итак, мой вопрос заключается в следующем:есть ли способ получить представление о месте, используя широту и длину точек?

Это было полезно?

Решение

Теперь это доступно через недавно выпущенный API для поиска места размещения.Слава Yahoo!за предоставление еще одной важной части географической головоломки.

Другие советы

Yahoo!PlaceFinder API позволяет вам найти соответствующий WOEID для пары широта / долгота.Рассмотрим этот пример вызова метода веб-службы:

http://where.yahooapis.com/geocode?location=37.42,-122.12&flags=J&gflags=R&appid=zHgnBS4m

Вы можете играть с параметрами запроса в соответствии с вашими потребностями, см. Yahoo!Документация PlaceFinder API для большего.И вам следует заменить appid на ваш Yahoo!appid, вы можете создать один здесь.

Этот запрос возвращает подобный ответ, который включает в себя множество полезных данных вместе с WOEID:

{
    "ResultSet": {
        "version": "1.0",
        "Error": 0,
        "ErrorMessage": "No error",
        "Locale": "us_US",
        "Quality": 99,
        "Found": 1,
        "Results": [
            {
                "quality": 99,
                "latitude": "37.420000",
                "longitude": "-122.120000",
                "offsetlat": "37.420000",
                "offsetlon": "-122.120000",
                "radius": 500,
                "name": "37.42,-122.12",
                "line1": "3589 Bryant St",
                "line2": "Palo Alto, CA  94306-4207",
                "line3": "",
                "line4": "United States",
                "house": "3589",
                "street": "Bryant St",
                "xstreet": "",
                "unittype": "",
                "unit": "",
                "postal": "94306-4207",
                "neighborhood": "",
                "city": "Palo Alto",
                "county": "Santa Clara County",
                "state": "California",
                "country": "United States",
                "countrycode": "US",
                "statecode": "CA",
                "countycode": "",
                "hash": "",
                "woeid": 12797284,
                "woetype": 11,
                "uzip": "94306"
            }
        ]
    }
}

Это не использует API Yahoo, но я нашел это сообщение в блоге:http://geomojo.org/?p=38

Упоминание этой услуги:http://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775

Возможно, вы сможете это использовать?Это решило мою проблему, я надеюсь, что это поможет в решении вашей.

Несколько нелепо, что Yahoo не предоставляет метод поиска для WOEIDs через lat / lon - это было в их списке задач с 2008 года - но таково положение вещей.

Я бы предостерег вас от использования предлагаемого обходного пути, реализованного в Geomojo.Если это работает с вашими данными, отлично, но сервис Yahoo, на который полагается Geomojo, непредсказуем.Geomojo использует PlaceMaker от Yahoo, который извлекает информацию о местоположении из неструктурированного текста для получения WOEID.Это достигается путем создания микроформата, содержащего вашу пару широта / долгота, и отправки его в PlaceMaker.Однако, поскольку PlaceMaker возвращает WOEIDs для почтовых индексов, происходит потеря разрешения, и иногда вы не сможете определить даже город по отправленным координатам.У меня есть ряд примеры точек на восточном побережье США .в случае, когда идентификаторы PlaceMaker WOEIDs не соответствуют представленным парам lat / lon.

Как ни странно, как пишет HD, только API Flickr предоставляет простой способ найдите WOEID из lat / lon.Метод findByLatLon от Flickr обладает отличным разрешением.Обычно он возвращает район (на один уровень ниже города) для пары координат.

Сначала получите название города из lat / long, используя этот код.

CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
[geocoder reverseGeocodeLocation:location
               completionHandler:^(NSArray *placemarks, NSError *error) {
                   if (error){
                       NSLog(@"Geocode failed with error: %@", error);
                       return;
                   }
                   CLPlacemark *placemark = [placemarks objectAtIndex:0];
                   NSLog(@"cityname - %@",placemark.locality);
               }];

Затем используйте это название города в приведенном ниже URL

https://search .yahoo.com/sugg/gossip/gossip-gl-location/?appid=weather&output=sd1&p2=pt&command=YOURCITYNAME

Пример - https://search .yahoo.com/sugg/gossip/gossip-gl-location/?appid=weather&output=sd1&p2=pt&command=sydney

Это вернет json, и вы найдете в этом get WOEID ...

{ "l" : { "gprid" : "eIL89mltSzSfgDWdP7uyBA" },
  "q" : "sydney",
  "r" : [ { "d" : "pt:iso=AU&woeid=1105779&lon=151.021&lat=-33.8563&s=New South Wales&c=Australia&sc=NSW&n=Sydney, Australia",
        "k" : "Sydney"
      } ]
}

Похоже, ты все неправильно понял.Это URL-адрес weather.yahoo.com:Погода.yahoo.com/united-states/illinois/chicago-2379574/ Последний бит - это ГОРЕ для Чикаго, т. е.2379574

Идентификаторы WOEIDs описаны в документах GeoPlanet:http://developer .yahoo.com/geo/geoplanet/guide/concepts.html#woeids

Вы можете использовать API обратного геокодирования Flickr через YQL.

Вот ссылка на YQL с примером запроса для поиска WOEID для заданной широты / lon:http://developer .yahoo.com/yql/console/#h=select%20place .что происходит%20 от%20flickr.places%20 где%20lat%3D43%20 и%20lon%3D-94

Приведенный выше запрос может быть вызван непосредственно из вашего приложения с помощью этого URL (доступны форматы XML / JSON).:http://query .yahooapis.com/v1/public/yql?q=select%20place .найдите%20 из%20flickr.places%20 где%20lat%3D43%20 и%20lon%3D-94 и формат=xml

На форумах YDN есть тема по этому вопросу http://developer .yahoo.net/forum/index.php?showtopic=69

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

Другие цитаты;

"У Flickr есть метод:flickr.places.findByLatLon, который возвращает WOEID, но они усекают координаты до трех знаков после запятой."

В этом разделе разработчик Yahoo также предлагает воспользоваться советом по адресу http://geomojo.org/?p=38 в качестве временного решения.

Вместо использования lng & lat вы можете использовать текущий онлайн-IP-адрес для получения названия города, а затем использовать веб-сервис Yahoo GeoPlanet для получения WOEID.Следуйте этому руководству, чтобы получить подробную информацию: http://4rapiddev.com/php/get-woeid-of-a-city-name-from-ip-address-with-php/

Прежний Yahoo Weather API устарел.В новый погодный API Yahoo требуется строка запроса для получения информации о погоде.

Используйте следующую строку запроса, чтобы получить данные о погоде по широте и долготе -
"https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"(" + latitude + "," + longitude + ")\")&format=json"

Например - https://query .yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22(31.63%2C74.87)%22)&format=json

Yahoo api использует weather.com на самом деле, так что перейдите на weather.com и найдите местную погоду.Я нахожусь в Чикаго, поэтому я ввел "Чикаго, Иллинойс", и вот ссылка в строке моего браузера, показывающая мою погоду:

http://www.weather.com/weather/today/Chicago+IL +ИСПОЛЬЗОВ0225?lswe=Чикаго,%20il&откуда=searchbox_localwx

В ссылке есть woeid, который является USIL0225

Ты можешь получить свой таким же образом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top