gifts2017

Яндекс.Карты в 1С 8. На базе API Яндекс.Карт и элемента управления ПолеHTMLДокумента

Опубликовал Алексей Княжев (Пип Пибип) в раздел Обработки - Универсальные обработки

Пример работы с сервисом Яндекс.Карты в 1С 8. На базе API Яндекс.Карт и элемента управления ПолеHTMLДокумента. Обработка строит маршрут из точки АдресОтгрузки в точку АдресДоставки с учетом пробок.

Внешняя обработка отображает в 1С маршрут из точки АдресОтгрузки в точку АдресДоставки, построенный API Яндекс.Карты. Маршрут строится с учетом и отображением пробок.

 

Для работы с обработкой Вам необходимо будет инициализировать первые три реквизита обработки и открыть форму обработки:

  1. API-ключ. Получить его можно здесь: https://tech.yandex.ru/maps/commercial/
  2. АдресОтгрузки, строка
  3. АдресДоставки, строка
  4. Объект, строка - необязательный параметр

АдресОтгрузки и АдресДоставки должны быть как минимум с двумя разделителями-запятыми, например: Москва, ул.Петровка, д.22. В противном случае, обработка будет работать только с конфигурциями УПП, УТ. Для других не уточнял.

Если заполнить реквизит Объект - то АдресДоставки можно будет выбирать из регистра сведений КонтактнаяИнформация. Форма списка регистра будет открыта с установленным отбором по Объекту.

 

Подробности того, как функционирует API Яндекс.Карт здесь (на примере данной обработки):

http://clubs.ya.ru/mapsapi/replies.xml?parent_id=18909&item_no=18907

Отдельно хотелсь бы отметить, что обработка выложена здесь для ознакомления - лицензионное соглашение Яндекс.Карт не предусматривает применение API Яндекс.Карт на десктоп приложении. Если есть необходимость использовать данную обработку в коммерческих целях, Вам необходимо будет перевести ее в Управляемые формы, разместить на вебсервере 1C 8.2 и сделать доступной из сети Интернет. Тогда условия лицензионного соглашения будут соблюдены.

 

При реализации были взяты идеи (модуль обработки) из обработки 1СКарта.epf неизвестного автора. Автор, если ты читаешь эти строки - спасибо тебе :)

Если что-либо не нравится в публикации/обработке - не торопитесь ставить минусы, лучше не стеснятесь писать об этом в комментариях. Буду стараться все оперативно исправлять.

В поиске нашел только одно похожее решение, с очень широким фукционалом, с возможность работать с целым рядом операторов сервисов карт, платное. Поэтому решил выложить свое, для ознакомления.

 

UPD Оказывается, в поиске есть ряд подобных примеров. Просто искать нужно по ключевому слову Yandex

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
YandexMaps.epf
.epf 11,78Kb
19.03.14
1269
.epf 11,78Kb 1269 Бесплатно

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Сергей Петров (Chez87) 08.08.11 23:25
Обработка работает только по Москве или по Питеру тоже?
2. Алексей Княжев (Пип Пибип) 09.08.11 18:04
Сергей, в таком виде, в каком обработка сейчас - к сожалению, нет.

Теоретически обработку можно привести к работе с любым городом, который поддерживается классом YMaps.Router:
YMaps.Router

Например, для карты Киева, в модуле формы обработки нужно будет изменить строку:
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
на
map.setCenter(new YMaps.GeoPoint(30.51, 50.44), 10);
Сейчас у себя попробовал - маршруты по Киеву прокладывает.

Для Питера же, строка нужна другая:
map.setCenter(new YMaps.GeoPoint(30.36, 59.95), 10);
Попробовал - маршруты по Питеру не прокладывает.

На сайте Яндекс, нашел такой абзац:
"В режиме бета-тестирования сервис доступен для маршрутов по Москве, Московской области и Украине."
3. disnos1 disnos2 (disnos) 10.08.11 13:00
А можно просто вычислить координаты середины маршрута и центровать карту по этим координатам :)
Будет работать для любого города по которому есть возможность построить маршрут у яндекса.
4. Алексей Княжев (Пип Пибип) 10.08.11 13:27
disnos - да, тоже думал на эту тему. тогда пример будет еще и универсальным.
5. Павел Опарин (opx) 11.08.11 11:04
Лучший вариант - построить маршрут и использовать функцию API для оцентровки и масштабирования. Увы не помню как она называется. На следующей неделе выложу обработку там эта функция будет + еще много вкусных плюшек. Но об этом на следующей неделе
6. Алексей Княжев (Пип Пибип) 11.08.11 13:57
opx - вы про это:
{ viewAutoApply: true } // Эта опция позволяет автоматически выставлять центр и коэффициент масштабирования карты
?
7. Sanechichek (d.alexandr) 11.08.11 15:34
Скажите, пожалуйста, где Вы брали литературу и вообще чем пользовались что бы написать такую обработку???
8. Ийон Тихий (cool.vlad4) 11.08.11 15:35
(7) я думаю ответом будет - изучение документации яндекс апи и наверное немножко javascript
iiivvvaaannn; Пип Пибип; +2 Ответить
9. Алексей Княжев (Пип Пибип) 11.08.11 15:48
Sanechichek, предлагаю на "ты"
cool.vlad4 все правильно написал. Яндекс API открыт, хорошо документирован. Есть так же сообщество, где на вопросы отвечают (в описании к обработке как раз есть ссылка на мою тему на форуме Яндекс API)
Ну и когда-то, когда доучивался в универе, работал веб-програмистом/веб-мастером/непоймикем. jQuery еще только появился.
10. Евгений Сосна (pumbaE) 20.09.11 16:50
Только, нарушаете вы лицензионное соглашение яндекса... И даже с ключом разработчика яндекс вас через некоторое время забанит. У меня получилось при 500 запросах в день (расчет маршрута торговых агентов) уже получить предупреждение от яндекса.
11. Алексей Княжев (Пип Пибип) 20.09.11 17:56
pumbaE, совершенно верно.

В описании к обработке об этом так и написано, цитирую: "Отдельно хотелсь бы отметить, что обработка выложена здесь для ознакомления - лицензионное соглашение Яндекс.Карт не предусматривает применение API Яндекс.Карт на десктоп приложении."

Единственное что, на счет этого я немогу дать гарантии: "Если есть необходимость использовать данную обработку в коммерческих целях, Вам необходимо будет перевести ее в Управляемые формы, разместить на вебсервере 1C 8.2 и сделать доступной из сети Интернет. Тогда условия лицензионного соглашения будут соблюдены.". Здесь лучше учтонить либо самостоятельно, либо написать в Техподдежку Яндекс - будет ли это легально, при таком использовании.
12. Евгений Сосна (pumbaE) 20.09.11 18:46
Легально, будет только тогда, когда любой сможет зайти на ваш сайт и воспользоваться сервисом яндекс карт. Мы вышли из данной ситуации, так soap сервис к сайту, а на сайте все примеры от яндекса (с его документации), получается как бы дублирование функционала с яндексом, при этом с 1С посылаем POST запрос на формирование, php создает javascript скрипт, в 1С уже загружаем страничку нашего сайта...
CatZero; Пип Пибип; +2 Ответить
13. Дамир Рашидов (ramir) 25.09.11 16:32
14. Pavel Y (Pashikuss) 26.09.11 12:37
Спасибо пригодилось!
Пип Пибип; +1 Ответить
15. Сергей (necropunk) 21.11.11 16:00
Интересная разработка. Попытаюсь к своей конфе прикрутить...
16. NAs Kur (Nastyok_Kur) 28.11.11 14:32
Никак не получается добавит Router! Упорно пишет "Команда не поддерживается объектом". Помогите, пожалуйста! Подскажите, с чем это может быть связано?

Код:
map.addOverlay(new YMaps.Router(['Москва, м. Курская', 'Москва, м. Парк культуры']));
17. Алексей Княжев (Пип Пибип) 28.11.11 15:10
(16) Nastyok_Kur, попробуйте как у меня, дословно:

var router = new YMaps.Router(
['Ракитки', 'Москва г, 1 САМОТЕЧНЫЙ ПЕРЕУЛОК, дом № 1'],
[],
{ viewAutoApply: true },
{ avoidTrafficJams: traffic.isShown() }
);

map.addOverlay(router);
18. NAs Kur (Nastyok_Kur) 29.11.11 11:37
Спасибо! Получилось! В чем была проблема парвда так и не поняла...
19. NAs Kur (Nastyok_Kur) 29.11.11 11:38
А не подскажете, как мне в 1С можно получить средствами YMaps расстояние маршрута? Понимаю, что есть метод getDistance() класса Router, но как то, что он возвращает мне в 1С увидеть...
20. Алексей Княжев (Пип Пибип) 29.11.11 12:25
(19) Nastyok_Kur, в варианте моей обработке - увидеть в 1С это можно будет только визуально, в элементе управления ПолеHTMLДокумента. В 1С подготавливаете код JavaScript, скармливаете получившуюся строку элементу управления ПолеHTMLДокумента (предварительно размещенному на форме) и наблюдаете результат на форме
21. NAs Kur (Nastyok_Kur) 29.11.11 12:30
Да, это я вижу. Я имею ввиду вернуть резултьтат в 1С, а далее мне средствами 1С с ним хочется работать... Т.е. увидеть - не дословно, а именно в коде работать с этим значением.
22. NAs Kur (Nastyok_Kur) 29.11.11 13:48
Пип Пибип, в общем я хотела средствами YMaps просчитать реальные расстояния между пунктами (не по прямой, а именно по дорогам) и заполнить их, скажем, в неком регистре для дальнейшего использования. Может ли мне в этом помочь класс Router?
Если подскажете - буду более чем благодарна!
23. Евгений Сосна (pumbaE) 29.11.11 14:56
МаршрутHTML = "
	|
	|	// Прокладывание маршрута
	|	var router = new YMaps.Router(["+МаршрутHTML+"], [1], {viewAutoApply: 1});
	|   map.addOverlay(router);
	|	// После заверешение построения маршрута изменяем содержмое значков начальной и конечной точек
	|        // И добавляем маршрут на карту
	|        YMaps.Events.observe(router, router.Events.Success, function() {
	|          
	|           //map.addOverlay(router);
	|			var summaryPanel = document.getElementById(""directions_panel"");
	|var route = """";
	|var dest=0;
	|for (var i=0; i<router.getNumRoutes(); i++) {
	|route = router.getRoute(i);
	|dest+=route.getDistance();
	|summaryPanel.innerHTML+=i +"":""+route.getDistance()+"";"";
	|}
	|summaryPanel.innerHTML = dest;
	|var summaryPanel = document.getElementById(""points_panel"");
	|summaryPanel.innerHTML = """";
	|var waypoint = """";
	|for (var i=0; i<router.getNumWayPoints(); i++) {
	|waipoint = router.getWayPoint(i);
	|summaryPanel.innerHTML+=i+"":""+waipoint.text+"";"";
	|
	|}
	|        });
	|	
	| ";
	
...Показать Скрыть

Как то так:
Процедура ЗаписатьМаршрутВТЧ()  Экспорт
	Перем мРазделительРасстояний, СоответствиеРасстояний, СоответствиеТочек, Текст;
	ТаблицаРасстояний = Новый ТаблицаЗначений;
	ТаблицаРасстояний.Колонки.Добавить("Индекс", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(4));
	ТаблицаРасстояний.Колонки.Добавить("Расстояние", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(30));
	СоответствиеТочек = Новый Соответствие;
	мРазделительРасстояний = ";";
	Попытка
		опМаршрут = ПолеHTML.Документ.getElementByID("directions_panel");
		 
		Если опМаршрут.innerHTML <> "" Тогда
		
			Текст = опМаршрут.innerHTML;
			Если ПустаяСтрока(Текст) Тогда
				Возврат;
			КонецЕсли; 
			
			//Определим маршруты и расстояния.
			
			а = СтрДлина(Текст);
			Пока а > 0 Цикл
				Если Сред(Текст, а, 1) <> мРазделительРасстояний И НЕ ПустаяСтрока(Сред(Текст, а, 1)) Тогда
					Прервать;
				КонецЕсли; 
				а = а - 1;
			КонецЦикла;
			
			Текст = Лев(Текст, а+1);
			ПозицияПервогоСимвола = 1;
			НомерЭлемента = 0;
			Для а = 1 По СтрДлина(Текст) Цикл
				Если Сред(Текст, а, 1) <> мРазделительРасстояний Тогда
					Продолжить;
				КонецЕсли;
				
				ПодстрокаЭлемента = СокрЛП(Сред(Текст, ПозицияПервогоСимвола, (а - ПозицияПервогоСимвола)));
				Если НЕ ПустаяСтрока(ПодстрокаЭлемента) Тогда
					//Получим индекс и расстояние.
					НачалоИндекс = Найти(ПодстрокаЭлемента, ":");
					НоваяСтрока = ТаблицаРасстояний.Добавить();
					НоваяСтрока.Индекс = СокрЛП(Сред(ПодстрокаЭлемента, 1, НачалоИндекс-1));
					НоваяСтрока.Расстояние = СокрЛП(Сред(ПодстрокаЭлемента, НачалоИндекс+1));
					
					//ИндексМаршрута = СокрЛП(Сред(ПодстрокаЭлемента, 1, НачалоИндекс-1));
					//РасстояниеМаршрута = СокрЛП(Сред(ПодстрокаЭлемента, НачалоИндекс+1));
					//СоответствиеРасстояний.Вставить(ИндексМаршрута, РасстояниеМаршрута);
				КонецЕсли;
				
				Если НЕ (а + 1 > СтрДлина(Текст)) Тогда
					ПозицияПервогоСимвола = а + 1;
				Иначе
					ПозицияПервогоСимвола = СтрДлина(Текст);
				КонецЕсли; 
			КонецЦикла;
		КонецЕсли;
	Исключение
		
	КонецПопытки;
	
	Попытка
		опМаршрут = ПолеHTML.Документ.getElementByID("points_panel");
		 
		Если опМаршрут.innerHTML <> "" Тогда
		
			Текст = опМаршрут.innerHTML;
			Если ПустаяСтрока(Текст) Тогда
				Возврат;
			КонецЕсли; 
			
			//Определим маршруты и расстояния.
			
			а = СтрДлина(Текст);
			Пока а > 0 Цикл
				Если Сред(Текст, а, 1) <> мРазделительРасстояний И НЕ ПустаяСтрока(Сред(Текст, а, 1)) Тогда
					Прервать;
				КонецЕсли; 
				а = а - 1;
			КонецЦикла;
			
			Текст = Лев(Текст, а+1);
			ПозицияПервогоСимвола = 1;
			НомерЭлемента = 0;
			Для а = 1 По СтрДлина(Текст) Цикл
				Если Сред(Текст, а, 1) <> мРазделительРасстояний Тогда
					Продолжить;
				КонецЕсли;
				
				ПодстрокаЭлемента = СокрЛП(Сред(Текст, ПозицияПервогоСимвола, (а - ПозицияПервогоСимвола)));
				Если НЕ ПустаяСтрока(ПодстрокаЭлемента) Тогда
					//Получим индекс и расстояние.
					НачалоИндекс = Найти(ПодстрокаЭлемента, ":");
					ИндексМаршрута = СокрЛП(Сред(ПодстрокаЭлемента, 1, НачалоИндекс-1));
					РасстояниеМаршрута = СокрЛП(Сред(ПодстрокаЭлемента, НачалоИндекс+1));
					СоответствиеТочек.Вставить(ИндексМаршрута, РасстояниеМаршрута);
				КонецЕсли;
				
				Если НЕ (а + 1 > СтрДлина(Текст)) Тогда
					ПозицияПервогоСимвола = а + 1;
				Иначе
					ПозицияПервогоСимвола = СтрДлина(Текст);
				КонецЕсли; 
			КонецЦикла;
		КонецЕсли;
	Исключение
		
	КонецПопытки;
	
	Маршруты.Очистить();
	ТаблицаРасстояний.Сортировать("Индекс");
	Для каждого ЭлементСтроки Из ТаблицаРасстояний Цикл
		Попытка
			НомерСтроки = Число(ЭлементСтроки.Индекс);
			РасстояниеМаршрута = Число(СокрЛп(ЭлементСтроки.Расстояние));
			
			НоваяСтрока = Маршруты.Добавить();
			НоваяСтрока.НачальнаяТочка = СоответствиеТочек.Получить(ЭлементСтроки.Индекс);
			НоваяСтрока.КонечнаяТочка = СоответствиеТочек.Получить(Строка(НомерСтроки+1));
			НоваяСтрока.Расстояние = РасстояниеМаршрута;
			
			//Если (НомерСтроки+1) < Контрагенты.Количество() Тогда
			//	Контрагенты[НомерСтроки+1].Расстояние = РасстояниеМаршрута;
			//КонецЕсли; 
			
		Исключение
			Сообщить("Не удалось преобразовать расстояние "+ЭлементСтроки.Индекс+" значение "+ЭлементСтроки.Расстояние);
		КонецПопытки;
	КонецЦикла;
КонецПроцедуры
...Показать Скрыть
Nastyok_Kur; Пип Пибип; +2 Ответить 1
24. NAs Kur (Nastyok_Kur) 30.11.11 08:36
(23) pumbaE, спасибо огромное! Но все равно не получается:(
Если говорю:
		|   	var summaryPanel = document.getElementById(""directions_panel"");
		  
		|		summaryPanel.innerHTML = router.getDistance();


Ругается: Не удалось задать значение свойства "innerHTML": значением объекта является NULL или он не определен.
Если говрю:
|	var summaryPanel = document.createElement(""directions_panel"");
		|	summaryPanel.innerHTML = router.getDistance();

Потом ПолеHTML.Документ.getElementByID("directions_panel") = Неопределено в Процедура ПолеHTMLДокументСформирован(Элемент)
25. Евгений Сосна (pumbaE) 30.11.11 12:51
ТекстHTML + ?(ТипМаршрута>0,МаршрутHTML,"") + "
	|	}	
	|	function onunloadpage(){
	|		map.destructor();
	|}
	|    </script>
	|
	|<STYLE type=text/css>
    |    .CustomPointDot {
    |        font-family:Arial,Geneva CY,Sans-Serif;
    |        font-size:12px;
    |        font-weight:bold;
    |
    |        position:absolute;
    |        left:1px;
    |        top:3px;
    |
    |        text-align:center;
    |        line-height:21px;
    |        
    |        width:25px;
    |        height:18px;
    |
    |        color:#444444;
    |    }
    |    
    |    .CustomPointName{
    |        font-size:12px;
    |        font-weight:bold;
    |
    |        position:relative; 
    |        top: -41px; 
    |        left: 10px;
    |    }
	|
    |</STYLE>
    |
	|<META name=GENERATOR content=""MSHTML 8.00.7600.16535"">
	|
	|</head>
	|<body style=""height: 100%"" onunload =""onunloadpage()"">
	|	 <div id=""YMapsID"" style=""width: 100%; height: 90%""></div>
	|	<DIV style=""BACKGROUND-COLOR: #ffee77; MARGIN: 20px; DISPLAY: none"" id=""directions_panel""></DIV>
	|	<DIV style=""BACKGROUND-COLOR: #ffee77; MARGIN: 20px; DISPLAY: none"" id=""points_panel""></DIV>
	|	 </body>
	|</html>
	|";
...Показать Скрыть

Это как пример. При формировании HTML проверьте есть ли у вас такие конструкции
|	<DIV style=""BACKGROUND-COLOR: #ffee77; MARGIN: 20px; DISPLAY: none"" id=""directions_panel""></DIV>
|	<DIV style=""BACKGROUND-COLOR: #ffee77; MARGIN: 20px; DISPLAY: none"" id=""points_panel""></DIV>
26. NAs Kur (Nastyok_Kur) 01.12.11 12:38
(25) pumbaE, спасибо огромное! Тперь все получилось:)
З.Ы. Ну не сильна я в написании скриптов)
27. Евгений Сосна (pumbaE) 01.12.11 16:35
учтите, для ie6 (в XP) и для ie7 разные заголовки html.
28. NAs Kur (Nastyok_Kur) 05.12.11 09:18
(25) pumbaE,Не подскажете еще, почему ПолеHTMLДокументСформирован(Элемент) срабатывает раньше, чем на самом деле отработал скрипт? И как прогрпммно отловить момент, когда скрипт отработал и уже можно работать с ПолеHTML.Документ.getElementByID("directions_panel")?

Пока сделала обработку по нажатию на кнопку...
29. Евгений Сосна (pumbaE) 12.12.11 14:35
(28) Nastyok_Kur, потому что он уже сформирован, то что Яндекс долго отвечает и script работает не виляет на признак сформирован. Я пока повесил обработчик ожидания на форму и проверяю уже результат работы скрипта, ну и поставил ограничение по времени конечно.

Есть как вариант попробовать так сделать:
Сообщить(ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow.eval("someJSfunction()"));
вызовет необходимую тебе функцию и вернет ее результат, даже не надо заморачиватся с парсингом html, в someJSfunction() делаешь возврат допустим массива с простыми данными (строка, число)
30. NAs Kur (Nastyok_Kur) 19.12.11 08:26
(29) pumbaE, спасибо за помощь!
Пока тоже сделала с обработчиком ожидания, вроде отлично отрабатывает!
31. Гость 16.02.12 13:14
Возможно ли "высосать" координаты домов, нас.пунктов с карты?
32. Гость 15.03.12 22:34
Скажите возможно ли каким-то образом не отображать метки начала и конца маршрута?
33. Леонид Тумашов (leonidt84) 22.03.12 02:04
Работаю из 1С-а с Yandex maps API.
В HTML код в цикле вставляю точки на карте

// метка с нумератором

ТекстHTML = ТекстHTML + "
|
| var point = new YMaps.GeoPoint(" + Формат(СтрокаКонтрагенты.Долгота,"ЧРД=.; ЧН=; ЧГ=0") + "," +
Формат(СтрокаКонтрагенты.Широта,"ЧРД=.; ЧН=; ЧГ=0")+ ");
| var placemark = new YMaps.Placemark(point, {hasBalloon: false, style: ""example#customPoint"", hideIcon: false});
| map.addOverlay(placemark);
| YMaps.Events.observe(placemark, placemark.Events.Click, function(){Create1CProcess(placemark)});";

Последней строчкой добавляю обработчик события клика по точке на карте.
чуть выше по коду определяю функцию-listener

| function Create1CProcess(){
| alert(typeof this);
| }


и вот в это вот this никак не хочет возвращаться placemark. Т.е. я хочу обратиться к точке, по которой кликнули, а как - не пойму. В Яве я не силен - подскажите кто разбирается.
34. Viktor Kupko (zipik) 25.03.12 17:33
Под управляемые формы есть?
35. Алексей Княжев (Пип Пибип) 05.04.12 12:21
(34) zipik, к сожалению, нет - необходимости не было
но должно быть не сложно (думаю, кроме случаев запуска клиентской части под linux - т.к. используется элемент формы ПолеHTMLДокумента)
36. Алексей Княжев (Пип Пибип) 05.04.12 12:23
(31) Гость, нет. Да и цели такой не стояло

(32) только начал изучать возможности, попробуйте поиграться с настройками router'а
37. Малышко В.Н. (molot) 06.05.12 15:38
38. Гость 15.05.12 10:35
Возможно ли получать данные по маршруту не выводя его в поле html документа?
А также можно ли получить данные по нескольким маршрутам за один раз?
39. Виталий Перевозкин (pvvking) 07.09.12 14:52
Вопрос как получить координаты объекта в 1с.
Например есть справочник с адресами в формате Россия,Город,Улица,дом,X,Y
все известно кроме X ну и Y как можно получить что-то подобное X=60.2546 Y=56.2546 .
Заранее спасибо.
40. Алексей Княжев (Пип Пибип) 07.09.12 16:22
(39) pvvking, попробуйте вот эту обработку посмотреть:
http://infostart.ru/public/126237/
там как раз передача данных в 1С должна быть
41. Сергей Сергей (26178@mail.ru) 14.11.12 02:32
как проверить входит ли точка в многоугольник созданный функцией
var polygon = new YMaps.Polygon([ new YMaps.GeoPoint(37.7,55.7),
new YMaps.GeoPoint(37.7,55.8),
new YMaps.GeoPoint(37.8,55.8),
new YMaps.GeoPoint(37.8,55.7),
new YMaps.GeoPoint(37.7,55.7)
]);

map.addOverlay(polygon);
42. Дмитрий (gosizo) 14.09.13 09:11
допустим я поставил несколько меток, можно ли как-то смасштабировать карту, что бы всемасштаб ыл максимально увеличен и в тоже время все метки были видны (в границах карты)?
43. Саня Кошев (drat9) 22.09.13 02:19
map.setBounds(new YMaps.GeoBounds(new YMaps.GeoPoint(" +
Формат(СтруктураВозврата.МинДолгота,"ЧРД=.; ЧН=; ЧГ=0") + ", " +
Формат(СтруктураВозврата.МинШирота,"ЧРД=.; ЧН=; ЧГ=0") + "), new YMaps.GeoPoint(" +
Формат(СтруктураВозврата.МаксДолгота,"ЧРД=.; ЧН=; ЧГ=0") + ", " +
Формат(СтруктураВозврата.МаксШирота,"ЧРД=.; ЧН=; ЧГ=0")+ ")));
|
| map.enableScrollZoom();
можно, вот у меня кусок кода
Светлый ум; +1 Ответить
44. Игорь Матюшин (Nebiros777) 17.02.14 17:39
Классная штука, надо кинуть в закладки. Спасибо.
45. olo lo (olo_lo4) 01.11.15 14:26
Подскажите, а как вывести в таблицу 1С подробное описание маршрута, имеется в виду прямо вывод движения по улицам и их расстояние. Мне нужно мерить длину движения от МКАД до цели в Московской области, никак не пойму и нигде найти подобное не могу. У вас единственно где нашел и то выводит в виде HTML ответа что никак нельзя обработать средствами 1С
46. Алексей Княжев (Пип Пибип) 01.11.15 18:45
(45) olo_lo4, попробуйте ссылку из поста №40, в данной же теме: http://forum.infostart.ru/forum24/topic41112/message750246/#message750246

Там должно быть получение результатов построения маршрута в саму 1С, с возможностью программной обработки
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа