Инициализация карты
Поиск адреса на карте с текстовым представлением
Геокодинг
Обратная поиск адреса по ее координатами
Взаимодействие с картами — прием координат установленного на карте метки
Построение маршрутов по указанным точками
Кластеризация меток на карте при увеличении масштаба
Теперь также поддержка тонкого и веб-клиента
Данная обработка демонстрирует возможности интеграции 1С с картографическими сервисами. Поскольку уже было опубликовано немало обработок на эту тему, я, чтобы не повторяться, решил собрать в одну обработку интересные и нужные функции из 4 сервисов:
Обновление 29.07.2024.
[*] В связи со скорым отказом Яндекса от использования анонимных вызовов API-JS и геокодирования доработана инициализация карты с использованием API-ключа(неправильно передавался параметр).
[*] Доработан геокодер яндекса — если указан API-ключ, то геокодирует с ним.
[*] Для геокодера Яндекса добавлен формат JSON.
[*] Исправлена проблема с переинициализацией карт в управляемых формах в тонком клиенте.
Обновление 13.02.2024.
[+] Добавлена возможность работы с OpenStreetMap через api OpenLayers v5. Геокдирование реализовано через сервис Nominatim. Маршрутизация реализована через сервис OSRM.
[+] Реализован алгоритм поиска и построения выпуклого многоугольника среди массива точек.
[*] Яндекс и Google требуют для корректной работы использование api-ключа. Обработка позволяет работать с этими сервисами как с ключем, так и без (но будет ограниченный функционал).
[*] Переделана обработка — теперь для каждого сервиса сделана отдельная форма для обычных и управляемых форм.
[*] Перевод работы макетов в режим совестимости IE=10.
[*] На текущий момент проверена работа всех представленных сервисов во всех режимах 1С — Толстый клиент, Тонкий клиент, Веб-клиент. Тестировалось на версии 1С 8.2.12.
[*] Работу http-геокодерования переведено на json-формат (кроме Яндекса). Оптимизирован сам процесс геокодирования — ответ читается сразу, а не сохраняется во временный. На старых версиях платформы может выдавать ошибку.
Обновление 29.07.2024.
[*] Отказ от использования метода eval() в обычных формах
[*] Перевод работы макетов в режим совестимости IE=9 и больше — открываются больше возможностей карт и меньше ошибок.
[*] Перевод 2GIS на API 2.0
[-] 2GIS — в версии 2.0 отсутствует встроенный js-геокодер
[*] Google-map — исправлена проблема с кластеризатором
[-] На версиях 1С ниже 8.3.7 при повторном открытии возможно отключене функционала HTML-документа. Скорее всего это внутрення ошибка платфрмы, которые исправлена в более поздних версиях.
Обновление 23.02.2024.
[*] Исправление ошибок в картах Яндекса и Гугл.
Обновление 10.01.2013.
Поддержка работы обработки в тонком и веб-клиенте. Но там поддерживается работа только трех поставщиков услуг — Яндекс, Google. Рамблер. 2ГИС выбыл из гонки, потому, что клик на элементе формы в 1С срабатывает раньше клика в JS, поэтому координаты метки не считываются. А событий в HTML-поля в управляемых формах очень мало — двойного клика нет. Также добавлена возможность построить полигон по выбранным точкам. В тонком клиенте работа HTML-поля бывает некорректна — это уже особенности платформы.
Вот список возможностей сервисов, которые я пытался интегрировать с 1С:
- Инициализация карты
- Поиск адреса на карте с текстовым представлением
- Геокодинг
- Обратная поиск адреса по ее координатами
- Взаимодействие с картами — прием координат установленного на карте метки
- Построение маршрутов по указанным точками
- Кластеризация меток на карте при увеличении масштаба
- Построение полигона по всем меткам на карте
- Построение выпуклого полигона по крайним меткам
Ну а теперь подробно по каждому сервиса
Web-версия.
API Яндекс-карт.
На текущий момент используется версия API 2.0.
Возможности обработки при работе с Яндекс-картами:
- Инициализация карты — ДА;
- Отсутствие API-ключа — ДА;
- Поиск адреса на карте с текстовым представлением — ДА;
- Геокодирование — ДА;
- Обратный поиск адреса по его координатами — ДА;
- Взаимодействие с картами — прием координат от установленной на карте метки — ДА (клик на карте);
- Построение маршрутов по указанным точками — ДА;
- Кластеризация меток на карте при увеличении масштаба — ДА;
Google-карты
Web-версия.
API Google- карт.
На текущий момент используется версия API v3.
Возможности обработки при работе с Google-картами:
- Инициализация карты — ДА;
- Отсутствие API-ключа — ДА;
- Поиск адреса на карте с текстовым представлением — ДА;
- Геокодирование — ДА;
- Обратный поиск адреса по его координатами — ДА;
- Взаимодействие с картами — прием координат от установленной на карте метки — ДА (клик на карте);
- Построение маршрутов по указанным точками — ДА (до 10 точек, включена оптимизация промежуточных точек);
- Кластеризация меток на карте при увеличении масштаба — ДА;
2ГИС-карты
Web-версия.
API 2ГИС- карт.
На текущий момент используется версия API 1.0.
Возможности обработки при работе с 2ГИС-картами:
- Инициализация карты — ДА;
- Отсутствие API-ключа — НЕТ;
- Поиск адреса на карте с текстовым представлением — ДА;
- Геокодирование — ДА (но нужен API-ключ);
- Обратный поиск адреса по его координатами — ДА;
- Взаимодействие с картами — прием координат от установленной на карте метки — ДА (клик на карте);
- Построение маршрутов по указанным точками — НЕТ;
- Кластеризация меток на карте при увеличении масштаба — НЕТ;
Рамблер-карты (проект умер, оставляю в статье для памяти)
Web-версия.
API Рамблер- карт.
На текущий момент используется версия API 1.x.
Возможности обработки при работе с Рамблер-картами:
- Инициализация карты — ДА;
- Отсутствие API-ключа — ДА;
- Поиск адреса на карте с текстовым представлением — ДА;
- Геокодирование — ДА;
- Обратный поиск адреса по его координатами — ДА;
- Взаимодействие с картами — прием координат от установленной на карте метки — ДА (одинарный клик на карте);
- Построение маршрутов по указанным точками — ДА;
- Кластеризация меток на карте при увеличении масштаба — ДА (но в обработку не добавлял, не понравилось);
Обработка реализована для 1С 8.2 (толстый клиент).
Что касается Яндекс-карт, то концептуально всё ровно так же, как в моей недавнейhttp://infostart.ru/public/164621/ Хотя слишком увлекаться возможностями eval всё ж нехорошо. 🙂
(1), спасибо за отзыв. API ведь одно — концепции тоже особо отличаться не будут :). Тем более в 1С, которая изначально предназначена для решения других задач.
А про eval можете ссылочку бросить или написать, что с ее использованием не так?
Потому что я в web-программировании новичок.
Спасибо большое за хороший пример.Делал нечто подобное, только дедовским способом.Теперь окончательно разберусь.
(3), всегда пожалуйста 🙂
Спасибо пример очень хорош и очень поучительный, с многими вещи разобрался который раньше не понимал. Однако на периферии с бесплатный кар толку ноль. Они мало то что очень и очень старые, они еще и практически не имеют детализации
Впервые посмотрел. Яндекс.
1.Ввел тупо=Город(ххх), улица(хххх),№дома- ищет город(ок),ищет нас.пункт с именем улицы(?),№ дома(???) В карточной метке- красиво
2.Создал точку (Точка 1), создал точку(Точка 2)
3. Удалил в ТЧ-«точки» точку (Точка1)- не обновляется отображение карты, т.е. метки Т1,Т2 на карте остались, нажимать кнопку «обновления» карты- это для продвинутых.
4.Ввел в ТЧ точку «вася» с координатами хх,уу- на карте тихо? т.е. точка не появилась- координаты рядом c точкой «город»- как бы должны отобразиться.
5.Как это можно приспособить для работы с GPS-системой «Навигатор»,чтобы сразу в 1с-БП получать маршрут движения автомобиля, точки его жизнедеятельности(остановка,заправка,слив бензина и т.п.)?
(6), спасибо за отзыв. Отвечаю:
1. Посмотрите информацию про геокодирование на странице описания API(есть в публикации).
2, 3. Таблица «точки» нужна для построение маршрута. Карта очищается при построении маршрута или очистке — кнопка рядом с маршрутом с крестиком — очищает и таблицу и карту.
4. Опять же повторюсь — таблица «точки» нужна для построения маршрута, для отображения на карте меток с адресом нужно использовать верхнюю таблицу «Адреса». Но и там после добавления ничего не появится — нужен двойной клик.
5. Напомню, что это не подпадает под лицензию использования. Ну а относительно задачи — надо искать механизмы импорта из системы «Навигатор» точек маршрута — XML, COM, OLE — ну а дальше уже дело техники. С этой системой не работал, по-этому больше не подскажу.
(7) и Вам спасибо. Посмотрел код и практически все стало понятно- первые впечатления- их и изложил.
http://infostart.ru/profile/48297/ и т.б. уже там об этом же. А про «Навигатор»-оч.похоже отображение на карте движений а/м объектов(точки_х)+ регистрация событий,но это уже с ними.
посмотрел и (1)
(2) eval нехороша тем, что снижает понимабельность, особенно становятся непрозрачны области действия тех или иных переменных, поэтому тогда уж или лучше сразу указывать их как глобальные (window), или минимально использовать eval, а по максимуму — конкретные функции. Стоит на месячишко отвлечься — и код, изобилующий eval, будет трудненько понять.
Кстати, я-то думал, ты сделал настоящее геокодирование… А это всего лишь показ на карте. Геокодирование интересно тогда, когда ты передаёшь, например, строковые адреса, а получаешь таблицу координат X,Y.
(6) Советую посмотреть и мою разработку. Там несколько простых примеров, с которых можно начинать, авось пригодится.
(9), а то думал, что что-то серьезное. Eval я использую для запуска операций (маршрутизация, отображение на карте маркера с координатами, поиск адреса по строке). С получением координат установленного маркера на карте я перемудрил, признаю. Можно и через значение GetElemenetByID() получить.
геокодирование — не знаю, что это означает для вас, но в моей разработке на карте отображается первый найденный (и наиболее точный) адрес через геокодирование внутреннее, а в таблицу , которая слева верхняя, попадают адреса, найденные через HTTP-геокодер.
Про
(9) Yashazz,добрый день. а я и посмотрел(только внешне,об этом и писал), но когда увидел «боян» кнопок( добавить метку ,удалить метку и т.д.)желания посмотреть «внутренности» не возникло. Года 4-5 назад сделал робкую попытку окунуться в мир html- получил такое разочарование от «убогости» доступных ресурсов( типа на бейсике-89г написать бухгалтерию предприятия),но с.б. появилась быстро прогрессирующая 8-ка на ней и «женился».
+ !
(10) Дык в том и фишка, что найденные только отображаются на карте. А через http — это уже давнишний боян. Я к тому, чтоб именно средствами API получать прогеокодированную инфу обратно в 1С. Я это сделал как раз с помощью eval и весьма извратно (там переход от асинхрона к синхронности 1С), хотел глянуть, может, есть другие идеи для группового геокодирования. Сразу предупрежу — скрипт, предлагаемый разработчиками Яндекса или его вызов как библиотеки не прокатывают, т.к. в 1С сейчас MSIE 7, а там фишки, поддерживаемые в java в следующих версиях (например ForEach).
(11) На API 2.0 это не баян. Делали на старой 1.Х, но не на новой. Конечно, разница невелика, но как демо-пример я нарочно их сделал.
в нашем городе яндекс отвратительно строит маршруты. может через все мосты проести, а точки в соседних кварталах. Но это не к автору обработки, конечно, а к яндексу.
(14), так ведь у вас есть еще Google и Рамблер маршрутизация 🙂
скачал версию от 10.01.13 (упр формы)
есть баг.
Сценарий:
1. выбрать яндекс
2. набрать в поиске «Москва».
3. Изменить размер элемента управления поле html (изменить размер формы, подвинуть вертикальный разделитель, ctrl+shift+z и тд)
вываливается окно IE с ошибкой исполнения сценария.
дополнение про версию на упр формах.
процедуры
ПроизвестиГеокодинг_Яндекс
ПроизвестиГеокодинг_Гугл
ПроизвестиГеокодинг_Рамблер
и функцию
Получить16Цвет
переведи на клиент
так как хранение временных файлов на сервере 1с как-то не айс, да и причин уходить на сторону сервера нету.
после (17) исчезает баг описанный в (16)
(17), ПроизвестиГеокодинг можно и перевести, но ПолучитьЦвет не выйдет — ГенераторСлучайныхЧисел не работает в ВебКлиенте.
(18), спасибо за наблюдение, обязательно гляну.
Там еще и с Рамблером проблема в Тонком клиенте — карта в поле HTML появляется внизу, сверху пустая область.
Но прикол в том, что для толстого, тонкого и веб-клиента я использую 1 текст HTML. Везде отрабатывало норм, а в тонком начало сбоить.
(19) тогда насерверебезконтекста
(21) какой релиз 1с?
(21) в 8.2.17.143 все ок. скинь скрин с проблемой.
(18), у меня не исчез баг. Если открыть форму с картой Яндекса, закрыть и повторно открыть — баг остается.
Но перевод функций геокодинга на клиент уместен.
Такое наблюдал, когда в толстом клиенте или в 8.1 передавал текст HTML-полю, в котором подгружались файлы скриптов или стиля, через метод УстановитьТекст(). Поэтому приходится изворачиваться — сохранять в файл и метод Перейти()
(23), тоже 8.2.17.143
(23), но несмотря на ошибку функционал карты остается полным.
(23) на обычных формах баг такой же. Это мешает, когда построишь маршрут, потом вываливается эта ошибка, после этого маршрут и точки отвязываются от карты.
(26) когда перевел на клиент, то для ПроизвестиГеокодинг_Рамблер пришлось доработать, так как там есть вызовы сервера (методы из ОбработкиОбъект).
(21) в первый раз когда открыл рамблер, то все работает отлично, потом переоткрывал, перестало работать как надо.
в основной упр форме в заголовке написано «Работа с каратми 1С: 4 в 1», но у тебя в упр формах только три сервиса.
(30), остаточное явление, извини. Дорабатывался функционал на управляемых формах, так что про заголовок и не подумал. Я изначально планировал 4 сервиса перетянуть, но 2ГИС отказался это делать.
(21) продолжение про глюк с рамблером.
http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx
Как сделать, чтобы не глючил (работает только при первом открытии обработки).
1. очистить всю историю в IE.
2. перевести работу IE WebBrowser в режим отличный от версии 7.
— на компьютере штатным образом можно установить только одну версию IE.
— при установке IE регистрируется в системе как ActiveX «Microsoft Web Browser». Реализация находится в ieframe.dll, которая располагается в системном каталоге ОС
— поле HTML документа для работы использует этот ActiveX, создавая его штатным образом.
Т.о. нам не понятно как можно добиться описанного Вами поведения.
Мы можем только посоветовать Вам убедиться в том, что IE был установлен правильно. Например, не используются утилиты, которые пытаются предоставить возможность параллельного использования IE разных версий.
PS у себя сделал 1cv8.exe 1f40 и 1cv8c.exe 1f40 в HKCU и тупо перезапустил приложения.
(32) проверить, что все заработало
http://rghost.ru/42879791
(25) фиксил чисткой кэша на стороне клиента 1с.
Скачал пробую добавить несколько точек — не получается.
Как вообще это проверить все?
(35), открываете стартовое окно
выбраете поставщка услуг (клик по логотипу)
появляется карта — вот по ней либо клик, либо двойной клик.
(36) На скринах в ТЧ адреса видно несколько адресов.
Как это сделать? посмотрел код. При вводе адреса в верхнее поле ТЧ Адреса очищается.
Не понятно зачем она тогда.
Я так понимал я ввожу несколько адресов и обработка геокодирует адрес и добавляет его в ТЧ.
Посмотрев код понял что ожидал другое поведение от этой обработки.
За обработку Спасибо.
(37), «несколько адресов в ТЧ адерсов» — это следствия геокодинга, который запускается при изменении адреса. Перед этим нужно очистить результат предыдущего геокодинга.
А у меня почему-то вообще открывается не ФормаОсновная, а ФормаОсновнаяУпр, т.к. на форме нет 2GIS. И не важно, в каком режиме я запускаю программу (толстый, тонкий). Пробовал поменять формы местами — 0. Почему так?
(39), возможно вы запускаете 1С в режиме «Толстый клиент управляемое приложение»?
Во всяком случае, у меня такой проблемы не было.
Если не получится — напишите номер версии 1С и конфигурацию, в которой запускаете (если не самописная).
Спасибо! Запустил в толстом клиенте (обычное приложение)! 2GIS появился!
(40) А почему 2GIS работает только в этом режиме (ТК ОП)?
(42), я описал в обновлении к публикации. 1С быстрее отрабатывает клик по карте, чем прикрепленное событие в JS. Проще говоря — нельзя корректно считать координаты метки для 2ГИС. Остается только поиск адреса. Остальной функционал тоже отсутствует. Поэтому решил с ним в тонком клиенте не заморачиваться.
А как снова отобразить точки на карте после очистки карты?
(44), просто точки уже не отобразить — можно вывести кластера, построить маршрут или полигон.
Но вы можете и сами программно (если умеете) доделать — по аналогии с верхней таблицей Адресов. Там при выборе адреса — выводится точка, только с предварительной очисткой карты.
(45)Спасибо. Попробую.
А почему такие точки в яндексе странные? Вот эта запатентованная (by Apple) скругленная рамочка — это точка )
(47), это по всей видимости зависит от Internet Explorer, который у вас стоит. И такое возникает в тонком клиенте.
В макете, в секции HEAD есть строка
.
Вот при установке
у меня появлялась такая точка :).
Поиграйтесь с мета тегом «X-UA-Compatible», на который завязывается HTML в тонком клиенте.
P.S. Если его убрать, макет напрочь отказывался работать.
Хорошая статья! Как раз нужный мне материал, но есть вопросы.
1. Карты — это типа показухи, предназначено для демонстрации готовой конфигурации?
2. Какие карты лучше подойдут для обозначения транзитных складов, а так же показать линии маршрута?
3. Кроме обработки, как ещё можно «внедрить» карты в конфигурацию? Или оно не внедряется внутрь, а чисто внешним файлом или внешним отчетом для демонстрации возможностей?
(49), в обработке я захотел собрать воедино работу с несколькими картографическими сервисами, у которых есть более-менее приемлемые карты стран СНГ. На сайте есть похожие обработки, но они заточены чисто под один сервис. Ну и наконец делалось это чисто для прокачки опыта.
По-этому это просто обработка — демонстрация возможностей работы из 1С с подобного рода сервисами. Конфигурации нет.
Мне из представленных 4 больше всего понравился Яндекс — хорошая детализация, русский/украинский язык, большая территория.
Напомню, что из перечисленных карт в 1С можно встроить только Гугл, при условии, что у вас есть бизнес-аккаунт.
Ну а внедрение:
(50) А Как добавить карту в нужный объект? Об этом где-нить написано?
Видел уже несколько примеров взаимодействия с АПИ поставщиков карт, очень интересная концепция, но более интересно реально прикладное внедрение, которое не просто умерло по средствам пользователей, а функционирует и используется (не в транспортных компаниях например). Можно предположить что в логистике это очень полезно.Но есть ли иные реализации задач по средствам карт API.
(52), отвязать карты от транспорта очень сложно. Но к примеру владельцы торговых или некоммерческих точек, которые разбросаны по городу или стране могут с помощью карт обозначит их для более удобного поиска.
Ни кто не задавался целью написать решение задачи коммивояжера с использованием данных карт? Это могло бы очень упростить работу логиста…
(54) В Москве такого решения — для произвольного маршрута — не существует. Тема была ещё на 77
(55) В смысле не существует? На сколько я знаю у тех же яндекс карт есть прокладка маршрута от точки А к точке Б, разве нельзя получить матрицу расстояний между всеми точками потом просчитать задачу коммивояжера по этой матрице и с помощью апи нарисовать маршрут? Я реализовывал похожую задачу, но без расчета оптимального пути((( Если у кого то есть функция решения задачи коммивояжера, то можем попробовать написать такую обработку.
Спасибо за обработку.
А как рекомендуется передавать параметры в обработку с адресом, который будет отображаться при открытии?
Например, нужно отображение адреса клиента, на карточке которого в УТ 11 планируем добавить кнопку с отображением карты (Яндекс).
В коде данный параметр отсутствует, да и его организация не совсем понятна…
(57) ,Спасибо за отзыв.
В макете Яндекса есть две процедуры:
Вызов этих процедур осуществляется с помощью метода — ЭлементыФормы.Эксплорер.Документ.parentWindow.eval(«FindAdres(«»» + ВашАдрес + «»»);»);
или
ЭлементыФормы.Эксплорер.Документ.parentWindow.eval(«ReverseSearchAdres(» + Широта + «,» + Долгота + «, «»» + ВашАдрес + «»»);»);
Обязательно скачаю. Это самое лучшее, что я мог себе представить. Если мне разрешат этой обработкой пользоваться на работе — мне вообще ничего почти не надо будет делать почти. Работы станет процентов на 70 меньше)))
Еще один вопросик
На скриншоте Яндекс.Карт отражено несколько адресов сразу на карте
В самой обработке непонятно, каким образом отображать сразу несколько адресов.
Строка поиска только для заполнения одного адреса или нет?
(60), после заполнения строки поиска запускается механизм геокодинга Яндекса (в данном случае) и в таблицу адресов заполняется все найденные адреса, а на карту выводится по координатам первый адрес, с предварительной очисткой карты. Т.е. всегда один адрес отобразится в данном случае.
На втором скриншоте, где несколько маркеров отображено, маркеры на карту добавляются вручную и поэтому их там несколько.
А теперь ответ на вопрос:
1. Методы отображения адреса на карте всегда покажут один маркер, поскольку там встроен метод очистки.
2. Метода отображения маркера исполняются без принудительной очистки и их можно выводить сколько угодно.
Проект «Рамблер-Карты» закрыт
Хорошие примеры 🙂 Еще бы сохранение маршрута в нужном масштабе сделать…
Хороший примерчик. Спасибо!
Яндекс карта. допустим я поставил несколько меток, можно ли как-то смасштабировать карту (не руками, а программно), что бы масштаб был максимально увеличен и в тоже время все метки были видны (в границах карты)?
(65), установка масштаба карты программно —Метод карты ;
Навесить правильный масштаб при наполнении карты — сложновато. Т.е. тут надо высчитывать наибольшее расстояние между точками и для него подбирать оптимальный масштаб. Автомасштаб есть при построении маршрута.
(66) в моем случае не вычерчивается маршрут а только выводятся метки на карту последовательно передавая параметры в функцию
Показать
в этом случае возможно применить автомасштаб ?
(67), эта функция делает только то, что добавляет метки на карту. Маршрутом и не пахнет.
Вот моя функция, которая выводит маршрут на карту:
Показать
А в параметр options нужно передать массив точек в виде
Но это все есть в обработке.
Изучаю вашу обработку. При переносе ее на документ вываливается ошибка
Значение не является значением объектного типа (value)
Элементы.Эксплорер.document.getElementById(«WebClientOperation»).value = «Reset()»;
Куда копать, что смотреть?
(69) , судя по ошибке — у вас управляемые формы и что-то не то, с HTML — не все прогрузилось. Но информации маловато.
1. Внешняя обработка нормально под тонким клиентом запускается и работает?
2. Какую карту используете?
3. На какой операции возникает проблема?
(70) 1с 8.3
Карта используется яндекса, перенесен функционал по работе с яндексом в свой модуль. Макет добавлен в общий. При построении маршрута вываливается эта ошибка 🙁
Если отключить «ОчисткаКарты()» то вываливается на этой строке
Элементы.Эксплорер.document.getElementById(«WebClientOperation»).value = «calcRoute(» + ПараметрыМаршрута + «)»;
с такой же ошибкой. Получается ему почему-то не нравится «(value)»
г. Санкт-Петербург, ул. Большая Морская, 23/12 на карте точка верно стоит — в таблице 2 строки
Большая Морская улица, 23, Санкт-Петербург, Россия, 190000
Большая Морская улица, 12, Санкт-Петербург, Россия, 190000
(72) , Проверил :
Яндекс — показывает один результат геокодинга, т.е. все ОК.
Гугл — показывает две строки. Скорее всего он не обновил у себя данные по этому адресу.
Алгоритм геокодирования — отправляет строку адреса, получает массив результатов, выводит первую точку (т.к. она самая подходящая) и подписывает ее строкой поиска.
Заметил, что при открытии Яндекс-карт выскакивает ошибка:
Эта ошибка связана с версией 2.0.35.
Поэтому, чтобы ее исправить надо в макете обработки «МакетЯндекс» изменить скрипт подключения карты с
на
(74) , Все же поспешил. Желательно оставить подключение к стабильной версии API, а чтобы запретить всплывающее окно с ошибкой — просто подключить следующий скрипт:
190068, Санкт-Петербург г, Лермонтовский пр-кт, дом № 30
По этому адресу выдает ошибку. Адрес взят из адресного классификатора.
Ошибка при попытке геокодировать по яндексу адрес: 190068, Санкт-Петербург г, Лермонтовский пр-кт, дом № 30
{Форма.ФормаУпр.Форма(123)}: Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет: Couldn’t connect to server
Однако на карте все нормально отображается.
1С 8.2.19.83.
С интернетом вроде все нормально. (правда на работе пробовал — может тут безопасники что заблокировали….)
И еще вопрос — Перенес карту на отдельную страницу. т.е. карта не видна сразу, а ее можно глянуть, типа при необходимости. Набираю адрес, нажимаю найти и получаю сообщение:
{Форма.ФормаУпр.Форма(109)}: Значение не является значением объектного типа (value)
Элементы.Эксплорер.document.getElementById(«WebClientOperation»).value = «FindAdres(«»» + Адрес + «»»);»;
Можно это как-то побороть?
Или карта обязательно должна отображаться для работы с ней?
(77), это ошибка с геокодингом. Он осуществляется по адресу «geocode-maps.yandex.ru».
Надо проверить, доступ по этому адресу. Также возможне временный сбой у Яндекса.
Но тем не менее, геокодинг сейчас работает.
(78), эта ошибка из-за того, что не загрузился HTML. А он к сожалению загружается, когда поле HTML документа видно на форме.
(79)
Да, действительно, адрес был заблокирован нашими доблестными сисадминами.
Кстати по двойному клику по адресу в верхней таблице Данные, получаем ошибку:
{Форма.ФормаУпр.Форма(273)}: Индекс находится за границами массива
Если ЗначениеЗаполнено(ТаблицаАдресов[ВыбраннаяСтрока].Широта) И ЗначениеЗаполнено(ТаблицаАдресов[ВыбраннаяСтрока].Долгота) Тогда
При этом параметр ВыбраннаяСтрока = 6 (а всего два адреса).
(82), мало информации.
Какой адрес искали?
Какая карта?
карта Яндекс.
Для примера сейчас ввел в поиск Туристская. Вывелось несколько результатов поиска. стал кликать по разным строкам — на карте отображается найденная точка. Ввел в поиск Садовая. При клике на последней записи появляется такое же сообщение.
т.е. похоже при вводе второго адреса может появляться такая ошибка.
(85) Stas-ch,
Проблема частично решилась. вдруг у кого будет такое же — надо в скрипте первой строкой прописать:
<!DO CTYPE html>
Но появилась другая проблема — при выводе карты она выводится по высоте в одну строку.
Если вместо
<div id=»map» st yle=»width:100%;height:100%»></div>
прописать
<div id=»map» st yle=»width:800px;height:400px»></div>
То карта отрисовывается в указанном размере, но это не совсем интересно,т.к. не заполняет все пространство или наоборот вылезает за рамки.
(85)(86), Нужно смотреть на эту строку
,
в частности на этот параметр
.
У меня к примеру стоит IE=7
(84), непонятное поведение платформы. Индексы строк не обнуляются пр очистки коллекции. В ближайшем будущем переделаю на ТекущиеДанные.
Ребят, а вот в обычных формах расчитывается длина маршрута, а в управляемых нет. Может кто то сделал расчет длины маршрута или знает как его сделать?)
(89), расчет длины маршрута в толстом клиенте реализован с помощью событий ПоляHTMLДокумента. Сам метод построения маршрута у Яндекса или Гугла асинхронный — т.е. после вызова метода работа скрипта идет дальше, но после выполнения метода можно вызвать другой скрипт, который и генерирует событие у ПоляHTMLДокумента.
В тонком клиенте только 1 событие у ПоляHTMLДокумента — значит этот метод не сработает.
На одном из проектов подсчет маршрута сделал следующим образом — после построения маршрута в специальные inputы помещается информация о времени и длине маршрута. После этого в управляемой форме подключается обработчик ожидания, который постоянно считывает эти inputы на наличие значения. Если считало — выводит информацию на форму, а эти inputы очищает.
(90)
«На одном из проектов подсчет маршрута сделал следующим образом — после построения маршрута в специальные inputы помещается информация о времени и длине маршрута. После этого в управляемой форме подключается обработчик ожидания, который постоянно считывает эти inputы на наличие значения. Если считало — выводит информацию на форму, а эти inputы очищает.» А это можно где-нибудь посмотреть детальнее.
Как побороть в Гугл карте построение маршрутов до 10 точек?
(92) set5553, да никак не побороть — это ограничение АПИ. Смотреть тут —https://developers.google.com/maps/documentation/javascript/directions#Waypoints .
Если купить Гугл карты для бизнеса — там будет 25 точек.
А как в УФ получить расстояние по рассчитанному маршруту?
Если
content=»IE=8″
заменить на
content=»IE=9″, то ошибка при инициализации карты пропадает, но возникают проблемы при работе.
Например, если нажать кнопку «обновить» —
ЭлементыФормы.Эксплорер.Документ.parentWindow.eval(«FindAdres(«»» + Адрес + «»»);»);
Адрес апи пробовал менять на 2.1.35 — не помогает.
Обсуждение наяндексе
(133) madonov,
Спасибо добрый человек. Потратил час разбираясь, если бы не ваш совет — неизвестно сколько бы ещё времени ушло!
(76) а в каком месте нужно вставить этот код?
(170) alex15650, к сожалению тот скрирт уже не работает.
Я решил это переводом совместимости IE в «IE=9». Но тогда слетает метод eval ().
Так что дополнительно надо переписать весь код взаимодействия с яндекс-картами.
За основу взял способ, который использовал в управляемой форме этой обработки — передача кода в один ,лемент управления и принудительный клик по втором.
Но на ИС есть и лрурие срособы.
(171) а можно поподробнее о реализации? ))
(172) alex15650, откройте управляемую форму этой обработки и посмотрите, как там устроен обмен с HTML-документом