|
Построение многоугольника на карте Яндекс API по координатам из справочника 1С | ☑ | ||
---|---|---|---|---|
0
Kuklachel
28.05.13
✎
14:15
|
Добрый день. Есть такая задача. На форме 1С отображать карту с контуром здания по координатам заранее внесенным в справочник. В макете я пишу такой скрипт JS:
[CODE]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <style type="text/css"> html, body, #map { width: 100%; height: 100%; margin: 0; padding: 0; } </style> <script type="text/javascript"> var myMap; var myPolygon; var myButton; // Дождёмся загрузки API и готовности DOM. ymaps.ready(init); function init () { myMap = new ymaps.Map('map', { center:[55.74131, 37.52620], zoom:16 }); myMap.behaviors.enable('scrollZoom'); myMap.controls.add( new ymaps.control.ZoomControl() ); myMap.controls.add('typeSelector'); //второй контур function AddPolygon(Name, Descr, Cont, Att, Latt, Params) { myPolygon = new ymaps.Polygon([ [ [Att, Latt], ], ], { balloonContent: Name, hintContent: Descr }, { fillColor: 'FF3030', strokeColor: '#CD2626', opacity: 0.5, strokeWidth: 1.5, strokeStyle: 'solid' }); myMap.geoObjects.add(myPolygon); //myPolygon.options.set("zIndex",750) return myPolygon; } function AddGroup(Name, Descr, Cont, Latt, Att, Params) { } //Создаем кнопку myButton = new ymaps.control.Button('<b>Редактировать контур<b>'); myButton.events .add('click', function () {}) .add('select', function () {myPolygon.editor.startEditing();}) .add('deselect', function () {myPolygon.editor.stopEditing();}); myMap.controls.add(myButton); } </script> </head> <body> <div id="map"></div> </body> </html> [/CODE] Далее, в модуле формы: [CODE] &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Макет = ОбработкаОбъект.ПолучитьМакет("Макет"); ТекстHTML = Макет.ПолучитьТекст(); КонецПроцедуры &НаСервере Функция ПолучитьТБЗ(Параметр1 = Неопределено) тбз.Загрузить(Справочники.КоординатыОбъектов.НайтиПоНаименованию(Параметр1).Координаты.Выгрузить()); Возврат Истина; КонецФункции &НаКлиенте Процедура ПриОткрытии(Отказ) ПолучитьТБЗ("КоординатыОбъектов"); Для Каждого Поле Из ТБЗ Цикл Широта = Поле.Широта; Долгота = Поле.Долгота; Элементы.ТекстHTML.Документ.parentWindow.eval("AddPolygon(""" + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")"); КонецЦикла; КонецПроцедуры [/CODE] Вроде все верно. До этого я писал обработку с простановкой маркеров на карте, по координатам из табличной части формы, у меня все отлично работало. Но здесь выдает ошибку "Метод объекта не обнаружен (eval)"! Помогите, пожалуйста, может кто-то сталкивался с данной проблемой. |
|||
1
pavelul73
28.05.13
✎
14:17
|
Может пытаешься получить координаты раньше, чем поле отобразилось на форме?
У меня была похожая прооблема |
|||
2
sda553
28.05.13
✎
14:18
|
||||
3
Kuklachel
28.05.13
✎
14:38
|
Я делал так как в той теме. Пробовал делать табличную часть в форме, вбивать туда координаты и по кнопке выводить, выдает ошибку : Ошибка при вызове метода контекста (eval)
|
|||
4
pavelul73
28.05.13
✎
15:31
|
попробуй сначала выводить просто карту, а потом вбивать координаты и нажимать на кнопку
|
|||
5
Kuklachel
28.05.13
✎
16:31
|
Сейчас я так и делаю, вывожу карту, в табличной части вбиваю координаты и нажимаю кнопку.
[CODE] &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Макет = ОбработкаОбъект.ПолучитьМакет("Макет"); ТекстHTML = Макет.ПолучитьТекст(); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) Для каждого Реквизит Из Объект.КоординатыОбъектов Цикл ИмяМетки = "Дом"; ОписаниеМетки = "Организация"; Широта = Реквизит.Широта; Долгота = Реквизит.Долгота; Элементы.ТекстHTML.Документ.parentWindow.eval( "AddPolygon(""" + ИмяМетки + """, """ + ОписаниеМетки + """, " + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")"); КонецЦикла; КонецПроцедуры [/CODE] В этом методе столкнулся с другой ошибкой "значение свойства AddPolygon или является null, или оно не определено, или не является объектом Function" |
|||
6
Dethmont
28.05.13
✎
16:49
|
Сообщить("Всего скриптов: "+Элементы.ТекстHTML.Документ.scripts.length);
|
|||
7
Kuklachel
28.05.13
✎
17:15
|
А что это даст? Всего скриптов:4.
|
|||
8
Kuklachel
29.05.13
✎
08:57
|
Доброе утро. Идеи кончились?
|
|||
9
sikuda
29.05.13
✎
09:23
|
Зачем eval и parentWindow. Я динамически собираю страницу и использую типа ready и onclick http://sikuda.ru/1s-i-html5/
|
|||
10
Kuklachel
29.05.13
✎
11:56
|
Я, к сожалению, не знаю как решить мою задачу с помощью вашего способа.
|
|||
11
Kuklachel
29.05.13
✎
15:41
|
Неужели больше нет идей?
|
|||
12
Kuklachel
30.05.13
✎
09:41
|
up
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |