Есть скрипт яндекс карт, на карте выбирается точка и адресс точки записывается в input:
<script type="text/javascript" charset="utf-8">
ymaps.ready(init);
function init() {
var myInput = document.getElementById("address"),
myPlacemark,
myMap = new ymaps.Map('map', {
center: [55.753994, 37.622093],
zoom: 9
}, {
searchControlProvider: 'yandex#search'
});
// Слушаем клик на карте.
myMap.events.add('click', function (e) {
var coords = e.get('coords');
// Если метка уже создана – просто передвигаем ее.
if (myPlacemark) {
myPlacemark.geometry.setCoordinates(coords);
}
// Если нет – создаем.
else {
myPlacemark = createPlacemark(coords);
myMap.geoObjects.add(myPlacemark);
// Слушаем событие окончания перетаскивания на метке.
myPlacemark.events.add('dragend', function () {
getAddress(myPlacemark.geometry.getCoordinates());
});
}
getAddress(coords);
});
// Создание метки.
function createPlacemark(coords) {
return new ymaps.Placemark(coords, {
iconCaption: 'поиск...'
}, {
preset: 'islands#violetDotIconWithCaption',
draggable: true
});
}
// Определяем адрес по координатам (обратное геокодирование).
function getAddress(coords) {
myPlacemark.properties.set('iconCaption', 'поиск...');
ymaps.geocode(coords).then(function (res) {
var firstGeoObject = res.geoObjects.get(0),
address = firstGeoObject.getAddressLine();
myPlacemark.properties
.set({
// Формируем строку с данными об объекте.
iconCaption: [
// Название населенного пункта или вышестоящее административно-территориальное образование.
firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
// Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
].filter(Boolean).join(', '),
// В качестве контента балуна задаем строку с адресом объекта.
balloonContent: address
});
myInput.value = address;
});
}
}
</script>
Как здесь из API получить еще Регион точки? Например, в отдельную переменную region.
Метод getAdministrativeAreas() возвращает содержание компонентов адреса, описывающих регион.
Например, в случае адресов в Москве это "Москва", т.к. это город федерального значения, а для такого адреса как "Московская область, городской округ Лосино-Петровский, село Анискино, Весенняя улица, 4" - это уже два элемента иерархии: "Московская область" и "городской округ Лосино-Петровский"
Сборка персонального компьютера от Artline: умный выбор для современных пользователей