1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
| Процедура ЗагрузитьКарту(Команда)
// Вставить содержимое обработчика.
Километраж = Неопределено;
APIКлюч = "AEdx8VoBAAAA1o8uVAIA3if9sOvgIZskBLE87YSOcpIYVT8AAAAAAAAAAAAbEV0KCZf48qwG_xdBCD826xXsLA==";
КодХТМЛ = "
|<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
|<html xmlns=""http://www.w3.org/1999/xhtml"">
|<head>
| <title>Маршрут доставки</title>
| <meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />
| <script type=""text/javascript"" src=""http://api-maps.yandex.ru/1.1/index.xml?key=" + APIКлюч + "&modules=traffic"" charset=""utf-8"">
| </script>
| <script type=""text/javascript"">
| YMaps.jQuery(
| function showAddress () {
| var map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]),
| traffic = new YMaps.Traffic.Control({
| showInfoSwitcher: true,
| infoLayerOptions: {
| cursor: YMaps.Cursor.HELP
| }
| }, {
| shown: true,
| infoLayerShown: true
| }
| );
|
| map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
| map.addControl(traffic);
| var toolBar = new YMaps.ToolBar();
| map.addControl(toolBar);
| map.addControl(new YMaps.Zoom());
| map.addControl(new YMaps.TypeControl());
| map.enableScrollZoom();
|
| var router = new YMaps.Router(
| [//~~ТелоФункции~~],
| [],
| { viewAutoApply: true },
| { avoidTrafficJams: traffic.isShown() },
| {avoidTrafficJams: true}
| );
|
| map.addOverlay(router);
|
| YMaps.Events.observe(
| router, router.Events.Success, function (router) {
| var route = router.getRoute(0);
| var itineraryList = ['Количество построенных маршрутов: ' + router.getNumRoutes() + '; Дистанция: ' + Math.round(router.getDistance() /1000) + ' км.; Приблизительное время в пути: ' + Math.round(router.getDuration()/60) + ' мин.'];
|
| for (var n=0; n < router.getNumRoutes(); n++) {
| var r = router.getRoute(n);
| var d = r.getDistance();
| itineraryList.push('Длинна маршрута: №' + Math.round(n) + ' ' + Math.round(d /1000) + 'км.');
| }
|
| var action = [];
| action['back'] = 'назад';
| action['left'] = 'налево';
| action['right'] = 'направо';
| action['none'] = 'прямо';
|
//| for (var i=0; i < route.getNumRouteSegments(); i++) {
//| var segment = route.getRouteSegment(i);
//| itineraryList.push('Едем ' + action[segment.getAction()] + "" на "" + segment.getStreet() + ', проезжаем ' + segment.getDistance() + ' м.');
//| }
|
| itineraryList.push('Останавливаемся.');
| alert(itineraryList.join('\n'));
| }
| );
| }
| );
| </script>
|</head>
|<body>
| <div id=""YMapsID"" style=""width:800px;height:600px"">
| </div>
|</body>
|</html>";
//ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ);
//Километраж = "Math.round(router.getDistance() /1000)";
МассивАдресов = Новый Массив;
Для сч=0 По Объект.Пункты.Количество()-1 Цикл
МассивАдресов.Добавить(Объект.Пункты[сч].Город + ", "+ Объект.Пункты[сч].Область +", "+ Объект.Пункты[сч].Улица);
КонецЦикла;
ТелоФункции = "";
ИндексЭлемента = 1;
Для Каждого Элемент Из МассивАдресов Цикл
Если ИндексЭлемента < МассивАдресов.Количество() Тогда
ТелоФункции = ТелоФункции + "'" + Элемент + "', ";
Иначе
ТелоФункции = ТелоФункции + "'" + Элемент + "'";
КонецЕсли;
ИндексЭлемента = ИндексЭлемента + 1;
КонецЦикла;
КодХТМЛ = СтрЗаменить(КодХТМЛ, "//~~ТелоФункции~~", ТелоФункции);
Карта = КодХТМЛ;
КонецПроцедуры |