Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- getCoord: (element) => {
- ymaps.ready(async () => {
- const yMap = service.of(element)
- var myPlacemark
- // Слушаем клик на карте.
- yMap.events.add('click', function (e) {
- var coords = e.get('coords');
- // Если метка уже создана – просто передвигаем ее.
- if (myPlacemark) {
- myPlacemark.geometry.setCoordinates(coords);
- }
- // Если нет – создаем.
- else {
- myPlacemark = createPlacemark(coords);
- yMap.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);
- myPlacemark.properties
- .set({
- // Формируем строку с данными об объекте.
- iconCaption: [
- // Название населенного пункта или вышестоящее административно-территориальное образование.
- firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
- // Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
- firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
- ].filter(Boolean).join(', '),
- // В качестве контента балуна задаем строку с адресом объекта.
- balloonContent: firstGeoObject.getAddressLine()
- });
- });
- }
- return(coords)
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement