Яндекс-карты: примеры работы с API 2.0
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Не вдаваясь в теории, совсем кратко опишу отличия: Почти все публикации на ИС, касающиеся работы с Яндекс-картами, основаны на использовании API 1.X, для которой требуется ключ доступа и которая, по нынешним меркам и утверждениям самих разработчиков, устарела. Поэтому за основу я взял актуальную версию 2.0, к тому же не требующую никаких ключей и регистраций, обладающую гораздо более широкими возможностями. Кроме того, представлен другой подход к работе с самой картой. Ранее представленные механизмы были основаны на принципе создания html-текста, который сразу формировался с учётом всех потребностей и, таким образом, для изменения поведения карты требовалось новое формирование этого исходного текста и перезагрузка его в окно встроенного браузера. Это более времяёмко и ресурсоёмко, громоздко и менее гибко. Я заложил в текст исходного html-текста только самые основные параметры-шаблоны (хотя и это может быть универсализировано), а функционал основан на заложенных в тексте js-функциях, которые по мере надобности вызываются из контекста клиента 1С.
Напоминаю, что, согласно Пользовательскому соглашению (http://legal.yandex.ru/maps_api/) и конкретно п.2.3.2, промышленное использование Yandex API в 1С фактически запрещено, и поэтому позиционирую публикацию как примеры для ознакомления, и не более того.
Примеры сведены в обработку, позволяющую наглядно ознакомиться с несколькими простейшими операциями в картах Яндекс. Просьба особо не плюсить, т.к. уровень знания javascript у меня ниже плинтуса, а именно он требуется для задачи в первую очередь. Вопросы, пожелания и замечания приветствуются - будет интересно "выжать" из такого подхода максимум.
UPD: добавил отслеживание событий с относительно управлямой подпиской на них. Всё очень грубо и без использования нормальных возможностей коллекции events на стороне js. Действие показано на примере определения координат места, куда щёлкнул пользователь. Ещё добавил кнопку удаления (скрытия) баллунов и меток.
UPD: добавил прямое геокодирование. Всё-таки захотелось сделать нормальное синхронное множественное геокодирование, по списку строковых адресов получаем их координаты.
UPD: добавлено создание многоугольников, в т.ч. с изменяемой геометрией (включённым режимом редактирования), заодно приведён пример конвертации цвета из RGB в Hex, чего сама 1С не умеет.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
WEB-интеграция Рабочее место Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)
Программный продукт "Управление доставками в 1С" позволяет обмениваться с личным кабинетом Boxberry, СДЭК, Энергия, Почта России, DPD, ПЭК, Grastin, Деловые Линии, КСЕ, Dalli, ЯндексДоставка. Упрощает создание заявок и резервирование заказов прямо в интерфейсе 1С
24400 руб.
10.03.2016 76129 321 100
WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)
Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.
17568 руб.
20.12.2024 7766 35 4
Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)
Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!
31720 руб.
27.03.2025 92263 69 44
Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.
42700 руб.
03.08.2020 25836 42 26
WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.
20740 руб.
13.05.2025 3084 6 0
WEB-интеграция Оптовая торговля Розничная торговля Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)
Модуль интеграции 1С с OpenCart 2.x, 3x позволяет обмениваться данными между OpenCart (самая популярная бесплатная cms для интернет-магазинов) и 1С:Предприятие 8.
6914 руб.
17.11.2015 135260 477 143
WEB-интеграция Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)
Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.
5094 руб.
21.06.2022 11419 12 0
WEB-интеграция Загрузка и выгрузка в Excel Разработчик Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)
Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.
12200 руб.
29.08.2025 3761 7 8
(2) Попробую завтра выслать.
(3) Массив передавать не пробовал; в качестве грубого решения могу посоветовать сделать функцию, в которую передаётся по 1 аргументу, вызвать сколько надо раз, а массив пусть сразу рождается на стороне js.
(4) Не поверите, я все имеющиеся обработки ИС внимательно посмотрел. :) Правда, уже после своей публикации наткнулся-таки на один случай, клиентская карта на API 2.0, а остальное всё старьё, причём, что забавно, почти все "навороченные" разработки базируются на (перекопипащивалось всё, вплоть до опечаток).
(3) Я из 1С передаю массив для построение полигона, к сожалению так и не смог его обработать на стороне явы, не хочет перебираться. Пришлось передовать строку и парсить ее. Почти переписал свою обработку на новый подход, очень порадовал меня, еще раз большое спасибо за пример.
(9) Я бы сделал так: сначала myArray=[]; потом function AddToArray(myArray,myElement) {myArray[myArray.length]=myElement} и дёргал эту функцию бы в цикле со стороны 1С. А потом перебрал бы так: for(var i in myArray) {// некое действие с элементом myArray[i]}
Или, посмотрите, как я компоную объект (это в данном случае почти как и для массива), передаваемый к прокладке маршрута - делаю строку и исполняю на js функцией eval.
Не уверен, сработает ли в браузере 1С такой код: map.geoObjects.each(function(gOb) {gOb.Visible=false}), но можно попробовать. Разумеется, с проверкой, является ли "gOb" меткой, а то можно всякие другие объекты карты заодно зацепить).
Значит "напрямую" всётаки нельзя передать массив?
Выдрать картинку-слой самой карты. Ну наверное да - можно. Но меток на ней не будет. Они в дрогом слое. И это торгда сводить вместе как-то. Наверное возможно (Точно возможно ведь на самих ЯК печать есть), но как и насколько просто ...
<sc ript src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></sc ript>
<sc ript type="text/javascript">
function errorHandler(msg){return true;}
window.on error=errorHandler;
....
ваш код
....
</sc ript> Показать***) Работает фильтр javascript'ов чтобы исключить XSS атаки (так мне сказали в техподдержке), поэтому "критичные слова" разбиты на части. Так, "sc ript" - это "script", "window.on error" - это "window.onerror".
я передаю строку типа "[[[50.01, 30.01],[50.20, 30.20],[50.01, 30.01]]]" - ничего не происходит, многоугольник не рисуется, а если такую же строку прописываю жестко в html коде:
myGeometry = {
type: 'Polygon',
coordinates: [[[50.01, 30.01],[50.20, 30.20],[50.01, 30.01]]]
},
- всё работает.
Что передавать в качестве параметра (вершины многоугольника) из 1с ????
(29) С печатью - кирдык. В API её как таковой нет, разработчики Яндекса честно признаются, что и свою-то штатную печать делали весьма тяжко и извратно, и что готовых решений нет. Скидывать всё в static API, разве что.
Для себя сделал грубо, просто, но с нарушением лицензионного соглашения (ну, для эксперимента-то можно) - я банально вывожу карту в её текущем состоянии на форму, с которой программно лепится скриншот, и дальше в mxl и айда. Другие пути ещё более кривые.
В первую очередь интересует можно ли получить от карты адреса по выделенным флажками домам:
Сначала к примеру отправляем список с 10 – адресами, на карте должны появиться флажки по этим адресам,
затем мышкой выделяем 4 флажка и нужно получить обратно от карты адреса этих выделенных флажков.
А так очень полезная разработка.
Как уже кто-то заметил, на основе Вашего творения появились новые примеры, с теми же ошибками и той же стилистикой оформления :-)
В обработке есть индексация точек маршрута?
А вообще, что-то мне Гугл-карты в последнее время нравятся больше. Геокодирование у них однозначнее. У Яндекса ведь как - задаёшь ему "улица Пупыркина, дом.666", он не-пойми-куда ставит маркер. Последний раз вообще в Баварию куда-то уехал, я еле нашёл. А у Гугла в этом случае ставит в геоцентр населённого пункта, в случае Мск это Кремль с чётко заданными координатами. Хоть можно понять, что геокодинг не удался.
ymaps.ready(init);
var myMap, myGeoObject, myRectangle;
function init () {
myMap = new ymaps.Map('map', {
center: [55.674, 37.601],
zoom: 11
});
// Cоздаем геообъект с типом геометрии "прямоугольник".
myGeoObject = new ymaps.GeoObject({
// Геометрия = тип геометрии + координаты геообъекта.
geometry: {
// Тип геометрии - прямоугольник.
type: 'Rectangle',
// Координаты.
coordinates: [
[55.665, 37.66],
[55.64, 37.53]
]
},
// Свойства.
properties: {
hintContent: 'Перетащи меня!',
balloonContent: 'Прямоугольник 2'
}
}, {
// Опции.
// Объект можно перетаскивать.
draggable: true,
// Цвет и прозрачность заливки.
fillColor: '#ffff0022',
// Цвет и прозрачность границ.
strokeColor: '#3caa3c88',
// Ширина линии.
strokeWidth: 7
});
// Создаем прямоугольник с помощью вспомогательного класса.
myRectangle = new ymaps.Rectangle([
// Задаем координаты диагональных углов прямоугольника.
[55.66, 37.60],
[55.71, 37.69]
], {
//Свойства
hintContent: 'Меня перетаскивать нельзя!',
balloonContent: 'Прямоугольник 1'
}, {
// Опции.
// Цвет и прозрачность заливки.
fillColor: '#7df9ff33',
// Дополнительная прозрачность заливки..
// Итоговая прозрачность будет не #33(0.2), а 0.1(0.2*0.5).
fillOpacity: 0.5,
// Цвет обводки.
strokeColor: '#0000FF',
// Прозрачность обводки.
strokeOpacity: 0.5,
// Ширина линии.
strokeWidth: 2,
// Радиус скругления углов.
// Данная опция принимается только прямоугольником.
borderRadius: 6
});
myMap.geoObjects
.add(myRectangle)
.add(myGeoObject);
}
<!DO CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ht ml xmlns="http://www.w3.org/1999/xhtml">
<head>
Здесь твои скрипты по карте......
<st yle type="text/css">
html, body{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
body{-moz-user-select:none;}
</style>
</head>
<body scroll="no">
<div id="map" style="width:100%;height:100%;"></div>
</body>
</html>
ПоказатьСрабатывает защита.... уточняю:
....scroll="no"
....style="width:100%;height:100%;"
<html >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script src="http://api-maps.yandex.ru/2.1-dev/?lang=ru-RU&load=package.full"" type=""text/javascript"></script>
<script type="text/javascript">
//убираем глюк встроенного в платформу браузера: ошибка сценария Script error при повторном отрытии окна
window.onerror = myOnError;
function myOnError(msg, url, lno) {return true}
var myMap;
ymaps.ready(function ()
{
myMap = new ymaps.Map('YMapsID',
{
center:[//Здесь добавим текущие координаты],
zoom:12,
controls: ['geolocationControl', 'typeSelector', 'trafficControl']
});
myPlacemark0 = new ymaps.Placemark(
[41.26954, 69.366503],
{iconContent: '18:37'},
{preset: 'twirl#redStretchyIcon'});
myMap.geoObjects.add(myPlacemark0);
});
</script>
<style type="text/css">
html, body {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="YMapsID" style="width:100%;height:100%;"</div>
</body>
</html>
Да вы занимайтесь чем хотите... В паблик свои дела только не выкладывайте.
Из беседы в личке я понял, что человек ты адекватный, но писать таки старайся аккуратнее.
Это ж паблик. По публичному коду судят о всех одинэсниках.
</script>
<style type="text/css">
html, body{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
body{-moz-user-select:none;}
#OurYMap {
width:100%;
height:100%;
}
</style>
</head>
ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 164621
Создание 04.12.12 14:05
Обновление 04.04.13 01:48
Просмотры 60337
Загрузки 2035
Рейтинг
106
Комментарии 88
Код открыт Да
Рубрики WEB-интеграция Работа с интерфейсом
Кому Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация
1C:Бухгалтерия
,
Универсальные
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)