В пользовательских свойствах не нашел подходящего поля. Думаю, можно сделать поле строкового типа и в нее скриптом перекидывать данные о координатах. Но, мой вопрос скорее по использованию карт. Вывести карту для просмотра не проблема, но как сделать пользователю доступной отметку точки, как это происходит в админке?
Смотрите API Яндекс карт. Там есть примеры установки точки, её даже перемещать и подписывать можно. Данные о координатах также записываются и в скрытые поля ввода, их и можно сохранить в доп. свойство пользователя.
// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
// Первичная центровка
center: [20.582821, 54.707826], // Офис Битрикса в Калининграде где-то тут
zoom: 11
}, {
balloonMaxWidth: 200
});
// Обработка события, возникающего при щелчке
// левой кнопкой мыши в любой точке карты.
// При возникновении такого события откроем балун.
myMap.events.add('click', function (e) {
if (!myMap.balloon.isOpen()) {
var coords = e.get('coordPosition');
// Вот тут заполняйте нужный вам input в форме координатами
// Или отправляйте AJAX, как вам больше нравится
// У Яндекса сначала долгота --> coords[0].toPrecision(4)
// Потом широта --> coords[1].toPrecision(4)
// Почти у всех остальных Картографических сервисов наоборот.
// Точности по опыту хватает до 4 знаков
myMap.balloon.open(coords, {
contentHeader: 'Событие!',
contentBody: '<p>Кто-то щелкнул по карте.</p>' +
'<p>Координаты щелчка: ' + [
coords[0].toPrecision(4),
coords[1].toPrecision(4)
].join(', ') + '</p>',
contentFooter: '<sup>Щелкните еще раз</sup>'
});
} else {
myMap.balloon.close();
}
});
// Обработка события, возникающего при щелчке
// правой кнопки мыши в любой точке карты.
// При возникновении такого события покажем всплывающую подсказку.
myMap.events.add('contextmenu', function (e) {
myMap.hint.show(e.get('coordPosition'), 'Кто-то щелкнул правой кнопкой');
});
}
Вставляете в script.js компонента, где инициализируется карта или прямо в тело страницы с компонентом.
Мальчик был настолько ленив, что специально вставал пораньше - чтобы подольше ничего не делать! (с)