Issue #3 invalid

Странные координаты

Arthur Khakimov
created an issue

from yandex_maps import api

api.geocode(key, u'Санкт-Петербург, Бумажная 4')

(u'1.046933', u'42.119075')

api.geocode(key, u'Казань, Парковая 21')

(u'1.046933', u'42.119075')

Comments (15)

  1. Mikhail Korobov repo owner
    • changed status to open

    Действительно странно. У меня вот такие результаты со своим ключом:

    >>> api.geocode(YANDEX_MAPS_API_KEY, u'Санкт-Петербург, Бумажная 4')
    (u'30.271446', u'59.903300')
    >>> api.geocode(YANDEX_MAPS_API_KEY, u'Казань, Парковая 21')
    (u'49.224030', u'55.858599')
    
    
  2. Mikhail Korobov repo owner

    Можете в личку свой ключ отправить, чтобы проверить, это в ключе дело, или в каких-нибудь настройках сети, например? Странно это все.

  3. Arthur Khakimov reporter

    Знаете, я до этого делал просто в браузере запросы, например:

    http://geocode-maps.yandex.ru/1.x/?geocode=%D1%E0%ED%EA%F2-%CF%E5%F2%E5%F0%E1%F3%F0%E3,+%C1%F3%EC%E0%E6%ED%E0%FF+4&key=...

    и получал в ответ XML - и для Бумажной, и для Парковой улицы выдавались правильные координаты.

    Хорошо, сейчас отправлю свой ключ.

  4. Mikhail Korobov repo owner

    Спасибо! С присланным ключом у меня тоже все работает, так что и правда не в ключе дело.

    Только что закоммитил изменение, с которым можно посмотреть, что именно шлет геокодер в ответ на запрос. Если проблема в парсинге xml, то сможем ее так выловить. Если не трудно, то не могли бы Вы поставить версию из репозитория и выполнить следующий код:

    >>> from yandex_maps import api
    >>> key = "..."
    >>> print api._get_geocode_xml(key, u'Казань, Парковая 21')
    

    и потом прислать сюда ответ (какой xml получен)?

  5. Arthur Khakimov reporter

    Если я все сделал правильно, то на запрос "Санкт-Петербург, Бумажная 4") я получаю вот что:

    <?xml version="1.0" encoding="utf-8"?>
    <ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:x="http://www.yandex.ru/xscript" xmlns:xi="http://www.w3.org/2001/XInclude">
      <GeoObjectCollection>
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderResponseMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <request>‘ ­ªâ-¥â¥à¡ãà£, ã¬ ¦­ ï 4</request>
            <found>1</found>
            <results>10</results>
          </GeocoderResponseMetaData>
        </metaDataProperty>
        <featureMember xmlns="http://www.opengis.net/gml">
          <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
            <metaDataProperty xmlns="http://www.opengis.net/gml">
              <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
                <kind>locality</kind>
                <text>Испания, поселок Исона</text>
                <precision>other</precision>
                <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
                  <Country>
                    <CountryNameCode>ES</CountryNameCode>
                    <CountryName>Испания</CountryName>
                    <Locality>
                      <LocalityName>поселок Исона</LocalityName>
                    </Locality>
                  </Country>
                </AddressDetails>
              </GeocoderMetaData>
            </metaDataProperty>
            <name xmlns="http://www.opengis.net/gml">исона</name>
            <boundedBy xmlns="http://www.opengis.net/gml">
              <Envelope>
                <lowerCorner>0.519604 41.725252</lowerCorner>
                <upperCorner>1.574262 42.510447</upperCorner>
              </Envelope>
            </boundedBy>
            <Point xmlns="http://www.opengis.net/gml">
              <pos>1.046933 42.119075</pos>
            </Point>
          </GeoObject>
        </featureMember>
      </GeoObjectCollection>
    </ymaps>
    
  6. Arthur Khakimov reporter

    Дословно запрос выглядел так:

    api._get_geocode_xml(key, u'Санкт-Петербург, Бумажная 4')

    У меня WinXP, Ipython. (Смогу быть на связи через час-полтора.)

  7. Mikhail Korobov repo owner

    Так, а что выдаст

    >>> from yandex_maps import api
    >>> key = "..."
    >>> print api._get_geocode_url(key, u'Санкт-Петербург, Бумажная 4')
    

    опять же с последней версией из репозитория? Сюда копировать все не стоит, чтобы ключ не светить.

    Похоже на какие-то проблемы с кодировкой адреса.

    У меня вот что выдает:

    >>> print api._get_geocode_url(key, u'Санкт-Петербург, Бумажная 4')
    http://geocode-maps.yandex.ru/1.x/?geocode=%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3%2C+%D0%91%D1%83%D0%BC%D0%B0%D0%B6%D0%BD%D0%B0%D1%8F+4&key=<мой ключ>
    >>> 
    
    
  8. Mikhail Korobov repo owner

    А просто в python, без IDLE?

    Сам IDLE не пользуюсь, но гугл выдает кучу всего нехорошего по "IDLE unicode".

  9. Mikhail Korobov repo owner

    Значит, не только ipython, но и IDLE не понимает, когда в них вбиваются юникодные константы русскими буквами. В ipython на это баг висит многолетний.

    Если вбить константы через '\u3546', то должно заработать. Если натравливать python на файлы с русскими юникодными строками, то тоже все должно работать, если сверху #coding:utf8 стоит.

    Спасибо, что не бросили просто все, и помогли разобраться!

  10. Mikhail Korobov repo owner

    Если что, из интерактивных консолей bpython с юникодом работает нормально вроде бы. Ну и стандартная консоль тоже нормально работает.

  11. Arthur Khakimov reporter

    Ну, это Вам спасибо! Модуль полезный, собираюсь пользоваться! На счет подобных проблем с Юникодом - раньше не приходилось сталкиваться, теперь буду в курсе. Еще один вопрос появился, сейчас напишу в личку.

  12. Log in to comment