ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

JavaScript API 2.x

YMapsML 1.x

Ответ. Результаты поиска

Результаты поискового запроса к Народной карте могут быть возвращены в следующих форматах:

  • XML;
  • JSON (может быть возвращен в качестве аргумента функции — JSONP).

Оба формата имеют одинаковую структуру, а возвращаемые результаты абсолютно одинаковы. В случае XML-выдачи результаты представлены в виде XML-элементов. При использовании JSON используются пары «ключ»:«значение», заключенные в фигурные скобки, и группировка с помощью массивов — квадратные скобки. Название XML-элемента совпадает с соответствующем ключом в JSON-выдаче.

Ответ в формате XML

Рассмотрим XML-ответ сервиса на запрос «мехмат МГУ»:

http://psearch-maps.yandex.ru/1.x/?format=xml&text=мехмат МГУ&key=API-ключ

Для получения выдачи в формате XML параметр format можно не использовать.

http://psearch-maps.yandex.ru/1.x/?text=мехмат МГУ&key=API-ключ

Ответ:

<?xml version="1.0" encoding="utf-8"?>
<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x">
  <GeoObjectCollection>
    <metaDataProperty xmlns="http://www.opengis.net/gml">
      <PSearchMetaData xmlns="http://maps.yandex.ru/psearch/1.x">
        <PSearchRequest>
          <request> мехмат МГУ</request>
          <results>10</results>
          <boundedBy xmlns="http://www.opengis.net/gml">
            <Envelope>
              <lowerCorner>38.869626 47.161456</lowerCorner>
              <upperCorner>38.969627 47.261451</upperCorner>
            </Envelope>
          </boundedBy>
        </PSearchRequest>
        <PSearchResponse>
          <found>1</found>
        </PSearchResponse>
      </PSearchMetaData>
    </metaDataProperty>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <PSearchObjectMetaData xmlns="http://maps.yandex.ru/psearch/1.x">
            <id>56</id>
            <name>Главное здание МГУ</name>
            <kind>house</kind>
            <Tags>
              <tag>мгу</tag>
              <tag>мехмат</tag>
              <tag>геофак</tag>
            </Tags>
            <Address>
              <locality>Москва</locality>
              <thoroughfare>Ленинские горы</thoroughfare>
              <premiseNumber>1</premiseNumber>
            </Address>
          </PSearchObjectMetaData>
        </metaDataProperty>
        <name xmlns="http://www.opengis.net/gml">Главное здание МГУ</name>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>37.527193 55.700877</lowerCorner>
            <upperCorner>37.534415 55.705026</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>37.530804 55.702952</pos>
        </Point>
      </GeoObject>
    </featureMember>
  </GeoObjectCollection>
</ymaps>

XML-ответ представляет собой документ в формате YMapsML, удовлетворяющий XML-схеме http://maps.yandex.ru/psearch/1.x.

Элемент PSearchRequest содержит информацию о тексте и прочих параметрах запроса, а элемент PSearchResponse — количество найденных объектов.

Информация о найденных объектах содержится в элементах GeoObject: описание объекта размещается в элементе PSearchObjectMetaData, географическая информация - в элементах Point и boundedBy.

Элемент PSearchObjectMetaData содержит следующую информацию об объекте:

  • уникальный идентификатор объекта, размещённого на Народной карте — элемент id;
  • название объекта — элемент name;
  • символьный идентификатор типа объекта (здание, населенный пункт, лес, водоем и пр., если указан) — элемент kind;
  • метки, присвоенные пользователями (если присвоены) — элемент Tags;
  • адрес объекта (если удалось определить) — элемент Address.

Координаты центра объекта содержатся в элементе Point, а в элементе boundedBy – координаты вершин минимального прямоугольника, в который может быть вписан объект.

Ответ в формате JSON

Чтобы получить ответ в формате JSON, необходимо присвоить параметру format значение json:

http://psearch-maps.yandex.ru/1.x/?format=json&text=мехмат МГУ&key=API-ключ

Ответ:

{
  "response": {
    "GeoObjectCollection": {
      "metaDataProperty": {
        "PSearchMetaData": {
          "PSearchRequest": {
            "request": " мехмат МГУ",
            "results": "10"
          },
          "PSearchResponse": {
            "found": "1"
          }
        }
      },
      "featureMember": [
        {
          "GeoObject": {
            "metaDataProperty": {
              "PSearchObjectMetaData": {
                "id": "56",
                "name": "Главное здание МГУ",
                "kind": "house",
                "Tags": {
                  "tag": "мгу",
                  "tag": "мехмат",
                  "tag": "геофак"
                },
                "Address": {
                  "locality": "Москва",
                  "thoroughfare": "Ленинские горы",
                  "premiseNumber": "1"
                }
              }
            },
            "name": "Главное здание МГУ",
            "boundedBy": {
              "Envelope": {
                "lowerCorner": "37.527202 55.700872",
                "upperCorner": "37.534334 55.705031"
              }
            },
            "Point": {
              "pos": "37.530768 55.702952"
            }
          }
        }
      ]
    }
  }
}

JSONP

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

При использовании JSONP серверу, возвращающему данные, передается имя функции, и результат возвращается в виде объекта JSON, но в качестве параметра функции с указанным именем.

Чтобы получить результаты поиска в виде JSONP, необходимо присвоить параметру callback имя функции, которая будет обрабатывать возвращенные в формате JSON результаты.

Так, по запросу

http://psearch-maps.yandex.ru/1.x/?format=json&callback=my_function&text=мехмат МГУ&key=API-ключ

будет возвращен JSON-объект из предыдущего примера, но в виде аргумента функции my_function:

my_function({
  "response": {
    "GeoObjectCollection": {
      "metaDataProperty": {
        "PSearchMetaData": {
          "PSearchRequest": {
            "request": " мехмат МГУ",
            "results": "10"

   ...

});