Как в Яндекс.Картах получить полный адрес по координатам

Если у вас есть 2 координаты, то рассмотрим вариант получения полного адреса в текстовом виде.

Полный адрес по координатам Яндекс API

Если вы уже получили координаты приступим к нашей задаче:

ymaps.ready(function(){
	var myReverseGeocoder = ymaps.geocode([coordinates[0],coordinates[1]]);
		myReverseGeocoder.then(function (res) {
		   console.log(res.geoObjects.get(0).properties.get('text'));
		});
});

Обратите внимание на параметры coordinates[0] и coordinates[1].

Где это может пригодится? Например, в оформлении заказа, когда кликаем по карте, происходит событие добавления точки placeMark.events.add (пример приведен из компонента оформления 1С-Битрикс). Стандартно он выглядит так:

if (this.propsMap.geoObjects.getLength() === 0)
{
	placeMark = new ymaps.Placemark([coordinates[0], coordinates[1]], {}, {
		draggable:true,
		preset: 'islands#redDotIcon'
	});
	placeMark.events.add(['parentchange', 'geometrychange'], function() {
		var orderDesc = BX('orderDescription'),
			coordinates = placeMark.geometry.getCoordinates(),
			ind, before, after, string;

		if (orderDesc)
		{
			ind = orderDesc.value.indexOf(BX.message('SOA_MAP_COORDS') + ':');
			if (ind === -1)
			{
				orderDesc.value = BX.message('SOA_MAP_COORDS') + ': ' + coordinates[0] + ', '
					+ coordinates[1] + '\r\n' + orderDesc.value;
			}
			else
			{
				string = BX.message('SOA_MAP_COORDS') + ': ' + coordinates[0] + ', ' + coordinates[1];
				before = orderDesc.value.substring(0, ind);
				after = orderDesc.value.substring(ind + string.length);
				orderDesc.value = before + string + after;
			}
		}
	});

	this.propsMap.geoObjects.add(placeMark);
}

Немного перепишем код скрипта оформления заказа:

placeMark.events.add(['parentchange', 'geometrychange'], function() {
	var orderDesc = BX('orderDescription'),
		coordinates = placeMark.geometry.getCoordinates(),
		ind, before, after, string;

		//ymaps.ready(function(){
			var myReverseGeocoder = ymaps.geocode([coordinates[0],coordinates[1]]);
				myReverseGeocoder.then(function (res) {
					console.log(res.geoObjects.get(0).properties.get('text'));
				});
		//});
});

В консоле видим полный адрес:
«Россия, Московская область, городской округ Щёлково, садовые участки».
Немного кастомизировав компонент оформления заказа битрикса, можем добиться попадания полного адреса в поле «Адрес доставки».

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

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

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