Как получить адрес при использовании api яндекс карт

1. Artem1405 25 30.09.19 20:06 Сейчас в теме
ymaps.ready(init);

function init() {
var 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);

myPlacemark.properties
.set({
// Формируем строку с данными об объекте.
iconCaption: [
// Название населенного пункта или вышестоящее административно-территориальное образование.
firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
// Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
].filter(Boolean).join(', '),
// В качестве контента балуна задаем строку с адресом объекта.
balloonContent: firstGeoObject.getAddressLine()
});
});
}
}
Показать


Я так понимаю это функция которая возвращает адрес по клику на карте, как мне получить значение в 1с?
&НаКлиенте
Процедура КартаПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Адрес = Элементы.Карта.Документ.myPlacemark;
Сообщить(Адрес);
КонецПроцедуры


Так не работает.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. uno-c 235 01.10.19 06:34 Сейчас в теме +2 $m
У меня вот так сработало:

...
var myPlacemark;
ymaps.ready(init);
function init() {
var myPlacemark2,
...
Т.е.
1) вынес переменную myPlacemark выше init() - после этого она стала доступна извне.
2) myPlacemark2 - переименовал просто чтобы не мешалась с вынесенной myPlacemark.
Кроме того, myPlacemark заполняется не сразу, поэтому выцепить адрес получилось через обработчик ожидания:
...
ПодключитьОбработчикОжидания("Через5Сек",5,Истина);
...
&НаКлиенте
Процедура Через5Сек()
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.balloonContent);
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.iconCaption);
КонецПроцедуры

Сообщения, выведенные обработкой через 5 секунд:
Россия, Московская область, Одинцовский городской округ, деревня Раздоры, 52
деревня Раздоры

Без API-key геокодирование у меня не работало, т.е. еще выше в строке подключения:
<sc ript src="https://api-maps.yandex.ru/2.1/?apikey=9b88c0ff-ffec-4284-a9f2-0abc1234567c&lang=ru_RU"  type="text/javascript"></sc ript>
здесь apikey не настоящий :) И слово "sc ript" без пробела, Инфостарт почему-то от себя его вставляет...

PS Делал на 8.3.15.1565
17. uno-c 235 02.10.19 02:17 Сейчас в теме +1 $m
(14)
1) Объявляем в зоне видимости из 1С var coordinates = {lat:0,lon:0};
2) После получения coords записываем в нашу coordinates широту и долготу coordinates.lat = coords[0]; coordinates.lon = coords[1];

...
var myPlacemark;
var coordinates = {lat:0,lon:0};
	
ymaps.ready(init);

function init() {
//var 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');
coordinates.lat = coords[0];
coordinates.lon = coords[1];
...
Показать


3) В 1С помимо вывода строкового адреса, обращаемся к свойствам переменной coordinates

&НаКлиенте
Процедура Через5Сек()
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.balloonContent);
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.iconCaption);
	Сообщить(Элементы.Карта.Документ.coordinates.lat);
	Сообщить(Элементы.Карта.Документ.coordinates.lon);
КонецПроцедуры


Результирующие сообщения 1С:

Россия, Московская область, Электросталь, улица Маяковского
Электросталь, улица Маяковского
55,7948255601463
38,4405744453125
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ex3mall 2 30.09.19 22:13 Сейчас в теме
3. minarenko 01.10.19 05:19 Сейчас в теме
(2)статья на зеркале инфостарта уже стало собственностью чистова?
4. uno-c 235 01.10.19 06:34 Сейчас в теме +2 $m
У меня вот так сработало:

...
var myPlacemark;
ymaps.ready(init);
function init() {
var myPlacemark2,
...
Т.е.
1) вынес переменную myPlacemark выше init() - после этого она стала доступна извне.
2) myPlacemark2 - переименовал просто чтобы не мешалась с вынесенной myPlacemark.
Кроме того, myPlacemark заполняется не сразу, поэтому выцепить адрес получилось через обработчик ожидания:
...
ПодключитьОбработчикОжидания("Через5Сек",5,Истина);
...
&НаКлиенте
Процедура Через5Сек()
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.balloonContent);
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.iconCaption);
КонецПроцедуры

Сообщения, выведенные обработкой через 5 секунд:
Россия, Московская область, Одинцовский городской округ, деревня Раздоры, 52
деревня Раздоры

Без API-key геокодирование у меня не работало, т.е. еще выше в строке подключения:
<sc ript src="https://api-maps.yandex.ru/2.1/?apikey=9b88c0ff-ffec-4284-a9f2-0abc1234567c&lang=ru_RU"  type="text/javascript"></sc ript>
здесь apikey не настоящий :) И слово "sc ript" без пробела, Инфостарт почему-то от себя его вставляет...

PS Делал на 8.3.15.1565
5. uno-c 235 01.10.19 07:28 Сейчас в теме
(4)Вместо переименования в var myPlacemark2 - её можно вообще удалить за ненадобностью:
...
var myPlacemark;
ymaps.ready(init);
function init() {
//здесь закомментировано объявление переменной var myPlacemark, т.к. вынесено выше
myMap = new ymaps.Map('map', { 
...
8. Artem1405 25 01.10.19 19:28 Сейчас в теме
(5) а можно как то координаты отсюда же получить или только адрес?
9. Artem1405 25 01.10.19 20:01 Сейчас в теме
(8) Сделал так же с переменной coord.
10. uno-c 235 02.10.19 01:44 Сейчас в теме
(9)И здесь координаты тоже есть: Элементы.Карта.Документ.myPlacemark.geometry._coordinates
11. Artem1405 25 02.10.19 01:48 Сейчас в теме
(10)
Элементы.Карта.Документ.myPlacemark.geometry._coordinates

Не могу к ним обратиться, выдает "внешний обьект"
Сообщить(Элементы.Карта.Документ.myPlacemark.geometry._coordinates);
Пробовал так:
Сообщить(Элементы.Карта.Документ.myPlacemark.geometry._coordinates[0]);
но тоже пустая строка
13. uno-c 235 02.10.19 02:00 Сейчас в теме
(11)а с переменной coord тоже не получилось? Тогда можно свой объект на javascript создать, в него записать координаты из coord и уже к нему обращаться.
14. Artem1405 25 02.10.19 02:02 Сейчас в теме
(13) в coord тоже координаты но не получается их достать, пробовал так:
mycoords = coords[0];
Возвращает неопределено.
17. uno-c 235 02.10.19 02:17 Сейчас в теме +1 $m
(14)
1) Объявляем в зоне видимости из 1С var coordinates = {lat:0,lon:0};
2) После получения coords записываем в нашу coordinates широту и долготу coordinates.lat = coords[0]; coordinates.lon = coords[1];

...
var myPlacemark;
var coordinates = {lat:0,lon:0};
	
ymaps.ready(init);

function init() {
//var 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');
coordinates.lat = coords[0];
coordinates.lon = coords[1];
...
Показать


3) В 1С помимо вывода строкового адреса, обращаемся к свойствам переменной coordinates

&НаКлиенте
Процедура Через5Сек()
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.balloonContent);
	Сообщить(Элементы.Карта.Документ.myPlacemark.properties._data.iconCaption);
	Сообщить(Элементы.Карта.Документ.coordinates.lat);
	Сообщить(Элементы.Карта.Документ.coordinates.lon);
КонецПроцедуры


Результирующие сообщения 1С:

Россия, Московская область, Электросталь, улица Маяковского
Электросталь, улица Маяковского
55,7948255601463
38,4405744453125
18. Artem1405 25 02.10.19 02:25 Сейчас в теме
(17) Работает! спасибо большое!:)
6. Artem1405 25 01.10.19 19:22 Сейчас в теме
Огромное спасибо!!! я уж думал нет такого решения, во всех примерах адрес вводят в ручную.
7. Artem1405 25 01.10.19 19:22 Сейчас в теме
12. Artem1405 25 02.10.19 01:54 Сейчас в теме
В отлачике вижу координаты, но получить их не могу, пробовал в цикле тоже не получается.
15. Artem1405 25 02.10.19 02:03 Сейчас в теме
// Слушаем клик на карте.
myMap.events.add('click', function (e) {
var coords = e.get('coords');

coords22 = 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);
mycoords = coords[0];
});
16. Artem1405 25 02.10.19 02:07 Сейчас в теме
в отладчике все есть, но что то не доходит как вытащить :(
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот