Ну что, продолжаем экспериментировать с различными API, на этот раз «перст» пал на Яндекс. Здесь мы рассмотрим как в своих проектах можно использовать Яндекс карты без программирования на JavaScript или динамической загрузки страницы.  Смысле Static API Яндекс.Карт состоит в том, что Вы получаете изображение карты формата *.png или *.jpg, в зависимости от типа карты, при этом отправляете конкретный запрос с параметрами, для того, чтобы получить данное изображение. Хочу сказать, что это самый простой способ получения Яндекс.Карт, но и самый ограниченный, а именно Вы получаете только статическое изображение определенного размера, где Вы уже по карте не сможете перемещаться.

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

Для того, чтобы Вам использовать любой API Яндекс.Карт Вам необходимо получить API-ключ — цифровое-буквенное значение, при помощи которого сервис Яндекс.Карт будет идентифицировать Ваше приложение. Для того, чтобы получить API-ключ, необходимо воспользоваться формой.

Давайте теперь поговорим о том, что именно Вы сможете производить с помощью Static API Яндекс.Карт:

  • указывать требуемые слои карты
  • указывать центр карты (задается координатами)
  • указывать область показа карты
  • указывать размеры карты (разрешение изображения карты)
  • указывать уровень масштабирования
  • размещать метки на карте
  • размещать ломанные линии на карте

Ну вот основные функции и возможности, которые Вы сможете осуществлять с помощью Static API Яндекс.Карт.

Ну а теперь приступим к рассмотрению параметров Static API Яндекс.Карт, а начнем мы с параметра формата карты, так как нам необходимо определиться в каком формате получать карты, а именно *.png или *.jpg. Формат карты передается в параметре l, а существует следующие форматы:

  • Схема (l=map)
  • Спутник (l=sat)
  • Гибрид (l=sat,skl)

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

Теперь поговорим о параметре, который отвечает за установку центра карты, при этом, чтобы установить центр карты необходимо нашему параметры задать координаты по долготе и широте в градусах. Если данный параметр не задан, то Static API Яндекс.Карт устанавливает центр карты автоматически.

За установку центра карты отвечает параметр ll, которому передаются координаты через запятую по долготе и широте в градусах, пример данного параметра, который устанавливает центр карты в центре Москвы:

  • ll=37.620070,55.753630

Напомню, что если данный параметр не указан, то Static API Яндекс.Карт делает это автоматически.

Идем дальше, теперь поговорим о размере карты, а точнее о разрешении нашего изображения карты. Так как если Вам в Вашем проекте необходимо отобразить совсем маленький «кусочек» карты, то зачем Вам грузить карты с разрешением 1024х768, при этом утратив больше трафика и времени. За это отвечает параметр size, он так и может принимать любое разрешение, то есть

  • size=1024,768

И так в нем, можете указывать абсолютно любое разрешение изображения Вашей карты.

Итак, идем далее, рассматривает то, как можно задать область показа карты, а точнее если быть, то какую часть Вам отображать на Вашем изображении карты. За это отвечает параметр spn, в него передается координаты по долготе и широте в градусах, при этом если Вы их не указали, то Static API Яндекс.Карт попытается сделать это автоматически. Например, задать протяженность карты можно так:

  • spn=0.002,0.002

Ну теперь приступим к рассмотрению того, как на карте можно установить уровень масштабирования.

Внимание! Если в запросе указана область показа карты (spn), то параметр, отвечающий за уровень масштабирования просто-напросто игнорируется

Параметр, который отвечает за уровень масштабирования — z, как Вы понимаете от увеличивает карту и может принимать значение от 0 до 17, например:

  • z=17

Теперь поговорим о том, как можно на карту с помощью Static API Яндекс.Карт добавить метку. За это отвечает параметр pt. В данный параметр передается описание метки, а точнее ее координаты по долготе и широте в градусах, стиль метки, ее цвет, размер и текст метки.

С помощью Static API Яндекс.Карт можно разместить до 100 меток

Все эти значения данного параметра перечисляются также через запятую.

Стиль метки — pm

Размер метки:

  • s — маленький
  • m — средний
  • l — большой

Цвет метки:


То есть, если Вы хотите отобразить метку зеленого цвета и большого размера с помощью Static API Яндекс.Карт, то параметр pt должен принимать следующее значение

  • pt=pmgrl~37.603,55.6

Текст метки должен принимать любое число от 0 до 99, которое указывается внутри самого значка метки. По умолчанию используется белая метка среднего размера:
Ну и наконец переходим к тому, как отображать линии на Вашей статической карте.

Static API Яндекс.Карт позволяет одновременно отобразить на Вашей статической карте не более 5 ломанных линии. И не забывайте, что у Вашей ломанной линии не должно быть более 100 вершин

За ломанные линии и многоугольники отвечает параметр pl. Данный параметр чем-то напоминает параметр меток. Данный параметр принимает следующие значения:

  • цвет линии
  • толщина
  • вершины
  • цвет заливки — для многоугольников

И наконец последний параметр — API-ключ, в котором Вы должны передать свой API-ключ и чтобы Вас Яндекс правильно инициализировал и дал доступ к своим данным. Он передается в параметре key

  • key=AHhaek0BAAAAeIQxKAIAug…..

Все параметры отделяются друг от друга с помощью знака «&«, но это если отправлять их с помощью GET-запроса, а если с помощью POST-запроса, то конечно формируем его как положено. Мы будем рассматривать как в своем приложении получить статическую карту с помощью GET-запроса.

Ну и теперь наконец-то приступим к самому программированию, как же нам получить эту саму статическую карту в наш проект. Все довольно просто, что нам понадобится для этого:

  • TImage — для отображения нашей статической карты
  • TButton - по нажатию на кнопку будем получать нашу статическую карту
  • TidHTTP - будем формировать запрос, для получения статический карты
  • PngImage - библиотека для работы с png-изображениями. Так как я буду получать карту формата — «Схема» (l=map), то она находится в формате *.png, а так как Delphi 7 по крайней мере не предоставляет нам возможности работать с png-изображениями, то воспользуемся библиотекой pngimage
  • API-ключ — который Вы должны были получить свой (мой API-ключ AHhaek0BAAAAeIQ……….)

В качестве примера, мы получим карту формата — «Схема«, с центром карты — 37.620070,55.753630, с областью показа — 0.3 градуса на 0.3, с красной меткой в центре карты и в метке, чтобы было отображено число 99.

У меня получился следующий обработчик OnClick нашей кнопки:

procedure TForm1.Button1Click(Sender: TObject);
var
 png:TPNGObject;
 st:TStringStream;
begin
   png:=TPNGObject.Create;
   st:=TStringStream.Create(IdHTTP1.Get('http://static-maps.yandex.ru/1.x/?'
   +'ll=37.620070,55.753630&spn=0.3,0.3&size=300,300&l=map&pt=37.6,55.7,pmrdl99&key=AHhaek0BAAAA'
   +'eIQxKAIAug5TEqsNtod3IPpUfBs_AoQUM3MAAAAAAAAAAADlrrinFsYwcNyXnEMhXLtTb-'
   +'KPew=='));
   png.LoadFromStream(st);
   Image1.Picture.Assign(png);
   FreeAndNil(png);
   FreeAndNil(st);
end;

Ну а вот, что у меня получается по нажатию на нашу кнопку:


Ну вроде бы кое-как объяснил, если что-то непонятно, то спрашивайте, исходник как всегда прилагается, скачать его можно тут


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


Метки: , , ,




К записи “Static API Яндекс.Карт” оставлено комментариев: 13.

  1. Андрей:

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

    • Andrey53:

      Без проблем, следующая серия статей, сперва по геокодированию, а затем Интерактивные карты Яндекс

  2. Андрей:

    Жду с нетерпением, очень полезные темы.

  3. [...] событие OnClick нашей кнопки прошлого проекта я дописал следующий код: Исходный код   procedure [...]

  4. Радмир:

    Очень полезная статья, как раз вовремя.
    Только возникает ошибка при запросе карты. Говорит неверный заголовок PNG-изображения. В чем может быть дело?

    • Andrey53:

      проект рабочий 100%, если Вы скачали проект, то Вам стоит посмотреть вот эту статью — https://zaokomtek.ru/?p=864

      Посмотреть как правильно вводить запросы и зарегистрировать свой API-ключ

      • Юлия:

        В соответствии с политикой Яндекса использовать API в приложениях, не являющихся интернет-сервисами, нельзя. Подскажите, пожалуйста, как зарегистрировать ключ для дальнейшего использования в локальном приложении (соответственно, созданном на Delphi)?

        • Юлия:

          Я правильно понимаю, что мне нужно зарегистрировать некоторый URL, к которому буду впоследствии обращаться из программы?

  5. [...] давайте приступим. В проекте Static API я создал, еще одну форму и на ней [...]

  6. [...] и рассмотрены, такие темы, как: Skype API, Vkontakte API, MapWindowGIS, YandexMapsAPI и более углубленные вопросы, по СУБД, по работе с сетью [...]

  7. Руслан:

    как установить карту на ДЛЕ, чтобы при добавления нового материала, где указан адрес конкретного дома например, автоматически создавалась карта с координатами этого объекта?

    • Andrey:

      этот проект по программированию на Delphi, но скажу, что для этих целей Вам необходимо использовать не статические карты, а динамические карты

Оставить комментарий на Радмир

Вы можете использовать следующие теги:

*