Функция geocode из API карт Яндекс работает в обе стороны. Получив строку адреса — сервис будет искать известные адреса и сообщит вам гео-коордитаны среди прочего множества данных. А если вы зададите гео-координаты, то получите ближайшие к этой точке адреса.
Далее примеры для иллюстрации работы геокодера.
Подключите сначала саму библиотеку.
1 |
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> |
Адрес в гео-координаты
Запрос гео-данных по адресной строке:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<script> //вызываем код по факту готовности объекта ymaps ymaps.ready(init); function init() { //отправляем на гео-кодирование var myGeocoder = ymaps.geocode('Москва, Сверчков переулок'); myGeocoder.then( function (res) { //выуживаем массив результатов var objs = res.geoObjects.toArray(); //выводим их в консоль for(i=0; i < objs.length; i++) console.log(objs[i].properties.getAll()); } ); } </script> |
Смотрим в консоль:
Координаты объекта возвращаются в универсальном виде, а именно, как прямоугольная область с указанной верхней левой и правой нижней точками — boundedBy.
Гео-координаты в адреса
Все точно также, только на входе — массив координат.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<script> //вызываем код по факту готовности объекта ymaps ymaps.ready(init); function init() { //отправляем на гео-кодирование координаты var myGeocoder = ymaps.geocode([55.76, 37.64]); myGeocoder.then( function (res) { var objs = res.geoObjects.toArray(); for(i=0; i < objs.length; i++) console.log(objs[i].properties.getAll()); } ); } </script> |
Пример данных, возвращаемых сервером (первый из элементов массива):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Object { balloonContent: "<h3>Сверчков переулок, 8с1</h3><p>Москва, Россия</p>", name: "Сверчков переулок, 8с1", description: "Россия, Москва", metaDataProperty: Object { ... }, boundedBy: Array(2) [ 0: Array(2) [ 0: 55.757911 1: 37.635772] 1: Array(2)[ 0: 55.762541 1: 37.643983] ] } |