Расскажите где именно вы планируете использовать javascript api яндекс карт и http api геокодера
Перейти к содержимому

Расскажите где именно вы планируете использовать javascript api яндекс карт и http api геокодера

  • автор:

API Яндекс.Карты – геокодирование и маршрутизация на JavaScript

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

Но предположим, что перед пользователем стоит задача обработать большой список адресов/координат, а именно, посчитать расстояния между точками по автомобильным дорогам и определить координаты внушительного списка объектов. Тогда-то он и столкнется с отсутствием возможности пакетной обработки в пользовательском интерфейсе сервиса. Однако, Яндекс об этом позаботился, предоставив в условно-бесплатное пользование JavaScript API.

Разработчики на JavaScript API получают техническую поддержку, подробную документацию, инструментарий для тестирования кода в “песочнице” на сайте проекта https://yandex.ru/dev/maps/jsapi/

Итак, я попробую воспользоваться этим инструментом для решения задачи геокодирования и построения маршрутов. Мне понадобится учетная запись Яндекс и API ключ для сервиса “JavaScript API и HTTP Геокодер”, который можно создать в Кабинете разработчика https://developer.tech.yandex.ru. Не буду подробно останавливаться на этом моменте, в сети достаточно информации, чтобы самостоятельно разобраться.

JavaScript API работает только в браузере, поэтому для выполнения кода нужно разработать web-страничку. В моем случае я могу обойтись статичным html-файлом, т.е. читать исходные данные и записывать результат буду в html-элементы, т.е. для упрощения обойдусь без использования серверной части. Итак, запускаю текстовый редактор и создаю заготовку будущей web-страницы.

Тут будет два многострочных текстовых поля, первое для ввода исходных данных (data) и второе — для записи результата (target), и две кнопки для запуска процесса обработки и очистки поля с результатом.

Обратите внимание, в заголовке страницы в элементе script подключается так необходимый мне API от Яндекса, а в параметрах url атрибута src необходимо указать тот самый секретный api-ключ, полученный в кабинете разработчика.

После загрузки страницы, в глобальном контексте выполнения JavaScript станет доступен объект ymaps, через который я получаю доступ к API, в том числе и к необходимым мне функциям геокодирования и маршрутизации. Напишу две функции “router” и “geocoder”, которые, как не сложно догадаться, реализуют построение маршрута и выполняют геокодирование. Конечно же JavaScript API реализуют значительно больше картографических сервисов и даже получаемые тут данные о маршруте и местоположении являются далеко не полными. Полное описание используемых методов доступно по ссылке, указанной в начале этого материала. Но вернемся к поставленной задаче и разберемся сначала с функцией “router”:

В качестве аргументов она принимает пункты отправления и назначения, которыми могут быть как строками с адресом, так и массивами [широта, долгота]. Эти аргументы передаются в метод route объекта ymaps вместе с параметрами построения маршрута, в моем случае routingMode: “auto” – это указание строить именно автомобильный маршрут. Метод возвращает promise-объект, содержащий в том числе протяженность маршрута в метрах, который затем и возвращает функция.

Очередь функции “geocoder”:

Функция принимает адрес строкой или массив [широта, долгота]. Этот параметр передается в метод geocode объекта ymaps вместе с параметрами геокодирования, в моем случае results: 1 – указание вернуть только один, наиболее точный, результат. Функция вернет promise-объект, содержащий координаты, тип, наименование, точность геокодирования.

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

, то в консоль браузера будут записаны результат геокодирования объекта “Москва” и информация о протяженности автомобильного маршрута “Москва -> Санкт-Петербург”

Остается только реализовать построчную обработку содержимого элемента “data” и запись результата в элемент “target”. Ниже приводится итоговое содержимое html-файла, в котором это реализуется функцией “start_process”.

Страница в браузере с результатами обработки выглядит примерно следующим образом:

Верхнее текстовое поле для вставки исходных данных, в нижнее пишется полученный результат. Если в строке исходных данных встречается разделитель (разделителем между пунктом отправления и прибытия является “;”), то осуществляется расчет маршрута, в противном случае выполняется геокодирование сроки (в примере на картинке выше “Лондон”). Также регулярным выражением определяется, являются ли исходные данные географическими координатами (широта и долгота разделены запятой) или строкой адреса, при этом адреса и координаты можно комбинировать при построении маршрута.

Внимательному читателю наверняка сразу бросилась в глаза вот эта конструкция в листинге кода:

Тут я делаю короткую (50 мсек) паузу перед обработкой следующей строки, т.е. искусственно устанавливаю предел максимальной скорости обработки в 20 строк в секунду. Спросите, зачем? И тут настало время упомянуть о технических лимитах бесплатного использования JavaScript API от Яндекса. А их два, но они довольно «вкусные»:

— Суточное ограничение – до 25000 запросов к API (каждый вызов метода geocode или route считается за 1). Информация о расходовании суточного лимита доступна в Кабинете разработчика.

— Кол-во запросов в секунду – не более 50

Т.е. пауза между вызовами API нужна, чтобы не превысить «скоростной лимит», установленный Яндексом.

«Яндекс.Карты» вернул ошибку «Invalid API key»

Карты работают на сайте и без API от яндекс карт, тогда зачем нужно указывать этот ключ?

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

7 ответов

  • популярные
  • новые

alt=»kadurinho» />kadurinho Партнер-эксперт Партнер-разработчик 18 декабря 2019 12:54 #

Ну так и напишите, использую в интернет магазине, в чем проблема то? 🙂

alt=»replicant» />replicant 18 декабря 2019 13:33 #

Карты работают, а тарифицируемые запросы Геокодера нет. Короче говоря, пройдите регистрацию и укажите ключ. Заодно статистику сможете смотреть по картам, запросами к ним и геокодеру отдельно. Иногда бывает полезно.

Если вы карты встраивали на сайт на страницы, то возможно потребуется добавить &apikey=хххх к ссылке на скрипт, но это по желанию и для статистики больше нужно вроде как.

Из плюсов наличия ключа в такой ссылке — это более полноценная карта из раздела Мои карты Яндекса с маршрутами и поиском при стандартном использовании через JS вставку или iframe. Вдруг пригодится. 🙂

alt=»santa0″ />santa0 19 декабря 2019 10:23 #

После обновления фреймворка перестали работать Яндекс.Карты

Показывают карту с центром Москвы. Такое бывало, когда указано только город без адреса. Теперь показывает даже с указанным точным адресом:

Перестала работать маршрутизация через сервис Yandex.Maps

Всем привет.
Недели 4 назад перестал работать сервис построения маршрутов.

Просто выводит пустую карту Yandex, и всё.
Ни ошибок, ни каких иных сообщений не выдаётся.
Никто не сталкивался с такой проблемой, как решать ?

>>Ни ошибок, ни каких иных сообщений не выдаётся.
>>alert("invalid key");

мы на подобные грабли наступили — я как раз был в офисе и кликнул мышой на сигнализацию, что обнаружена проблема. Пришел ответ.

Спасибо, что написали нам!

Уточните, пожалуйста:
1. Ситуация, о которой Вы пишете, появляется при открытии Яндекс.Карт на домашнем или рабочем компьютере?
2. Используете ли Вы прокси/VPN?
3. Используете ли Вы API Яндекс.Карт (например, геокодер)? Если используете, расскажите, пожалуйста, подробнее, для чего именно. Возможно, у Вас установлено стороннее ПО, отправляющее запросы к геокодеру.

Заранее спасибо за ответ!

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

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

Бесплатный API подходит не всем — есть несколько условий, которые нужно соблюдать
1. Полученные от API данные должны быть отображены на карте с логотипом Яндекса. Вы не можете изменять или сохранять их.

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

3. API не будет использоваться для управления транспортом или мобильными сотрудниками.

4. Если вы планируете использовать JavaScript API и HTTP API Геокодера, вам будет достаточно 25 000 запросов в сутки, а если API Поиска по организациям — 500.Что такое запрос.

Для проектов, в которых нельзя выполнить хотя бы одно условие, API будет платным.
Подробнее об условиях бесплатного использования можно узнать здесь.

+(8)
Что ещё нужно учитывать
Все технические возможности API Карт могут быть доступны и бесплатно, и платно. Но есть несколько нюансов, которые нужно учитывать.

Если вы пользуетесь API бесплатно и превышаете суточный лимит запросов, карта перестаёт работать до конца суток. При платном использовании такого не произойдёт — все запросы, которые превышают лимит, тарифицируются отдельно.
В платной версии API нельзя использовать подложки карт «Спутник» и «Гибрид» — это запрещают партнёры, которые предоставляют Яндексу спутниковые снимки.

Как получить API-ключ Яндекс #3074

На открывшейся странице нажмите на кнопку «Подключить API».

216831661_8569_618d008943476.png

Шаг 2

Выберите пункт «JavaScript API и HTTP Геокодер» и нажмите «Продолжить».

216831661_8570_618d008968c8d.png

Шаг 3

В открывшемся окне укажите:

  • Свои контактные данные (ФИО, Email, телефон, Название компании).
  • В открытой или закрытой системе Вы планируете использовать API.
  • В платном или бесплатном проекте Вы планируете использовать API.
  • На карте или используя только геокодирование Вы планируете отображать данные.
  • Укажите ссылку на ваш сайт.
  • Кратко опишите, для чего вам необходим ключ (например, «для размещения карт с контактными данными» или «для указания координат пунктов самовывоза» и т.д.).
  • Количество запросов к геокодеру или маршрутизатору в сутки.
  • Если вы согласны с условиями пользовательского соглашения, отметьте соответствующую галочку.
  • Прочие поля заполните на свое усмотрение.

В конце нажмите «Продолжить».

216831661_8571_618d01b912386.png

Шаг 4

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

216831661_8572_618d053817b68.png

  • Полученный ключ вы сможете указать в соответствующем разделе Системы Управления — это позволит корректно работать яндекс-картам на вашем сайте. Подробнее по ссылке.

Мы занимаемся разработкой веб-сайтов для России и зарубежных рынков с 1997 года. Наша команда – более пятисот сотрудников в разных странах и городах.

Понимание потребностей онлайн-бизнеса, опыт взаимодействия с тысячами клиентов, высокая квалификация персонала, собственные «ноу-хау» и хороший объём заказов позволяют веб-студии Мегагрупп.ру предлагать услуги высокого качества по удивительно низким и «вкусным» ценам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *