Строим маршруты на картах в 1С с помощью OpenStreetMap, OSRM и Leaflet

13.09.21

Интеграция - WEB-интеграция

Краткая статья о том как вывести на карту (в 1С) маршруты с помощью OpenStreetMap, OSRM и Leaflet. По данной системе очень мало примеров, но так как OpenStreetMap является бесплатным сервисом и не требует никаких ключей и регистраций, и является довольно мощным механизмом, решил написать небольшую статью "как это сделать?". В первую очередь скажу, все намного проще, если вы используете последнюю версию платформы (8.3.14), где есть поддержка практически всех браузеров (IE 11, EDGE, Mozilla), но что делать если у нас не самая свежая платформа, где поддержка только IE 9?

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка "Работа с картами OSR"
.epf 12,25Kb
188
188 Скачать (2 SM) Купить за 2 150 руб.

Берем Leaflet API

1. Создаем текстовый общий макет:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9"/>
    <link rel="stylesheet" href="/redirect.php?url=aHR0cHM6Ly91bnBrZy5jb20vbGVhZmxldEAxLjMuMS9kaXN0L2xlYWZsZXQuY3Nz" />
    <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js"></script>
</head>
<body>
    <div id="map" class="map" style="position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px;"></div>
    <script type="text/javascript">
    	var map = L.map('map');
    	map.setView([&ШиротаЦентр, &ДолготаЦентр], 13);
	    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    		attribution: '&copy; <a href="/redirect.php?url=aHR0cDovL29zbS5vcmcvY29weXJpZ2h0">OpenStreetMap</a> and &copy; <a href="/redirect.php?url=aHR0cDovL215LnNlcnZlcg==">Тут наша организация</a> contributors'
		}).addTo(map);
	&КодМаршрута
    </script>
</body>
</html>

Версия leaflet указывается актуальная, либо используйте ту, которая в примере.. В примере кода заменяются ссылки на неверные <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" />

В коде HTML присутствует 3 параметра: &ШиротаЦентр, &ДолготаЦентр, &КодМаршрута, которые нам нужно будет заменить на свои, при выводе текста в поле HTML документа. Первые два параметра указывают на центр карты для начального отображения (предлагается ставить координаты первой точки маршрута), третий - сам "код" (скрипт) маршрута (возможно сделать встроенные функции на JS, но мне было лень)).

2. Вторым шагом пишем две процедуры (в общем модуле, где хотите), первая - определение геокодирования адреса (получение координат по представлению адреса), описание сервиса доступно по ссылке Nominatim:

Функция ГеокодироватьАдрес(ТекАдрес) Экспорт

	оср = Новый HTTPСоединение("nominatim.openstreetmap.org", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
	мАдрес = СтрРазделить(ТекАдрес, " ");
	Попытка
		Запрос = Новый HTTPЗапрос("/?format=json&q=" + СтрСоединить(мАдрес, "+"));
		Ответ = оср.Получить(Запрос);
	Исключение
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка при попытке геокодировать по OSR, адрес: " + ТекАдрес + Символы.ПС + "Описание: " + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	Попытка
		СтруктАдреса = ПрочитатьJSON(ЧтениеJSON);
	Исключение
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка при попытке геокодировать по OSR, адрес: " + ТекАдрес + Символы.ПС + "Описание: " + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	Если ТипЗнч(СтруктАдреса) = Тип("Массив") Тогда
		Если СтруктАдреса.Количество() = 0 Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Для адреса: """ + ТекАдрес + """ не обнаружено ни одной геопозиции");
			Возврат Неопределено;
		ИначеЕсли СтруктАдреса.Количество() > 1 Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Для адреса: """ + ТекАдрес + """ обнаружено больше одной геопозиции");
		КонецЕсли;
		Адрес = СтруктАдреса[0];
		Возврат Новый Структура("Адрес,Широта,Долгота", Адрес.display_name, Адрес.lat, Адрес.lon) 
	КонецЕсли;

КонецФункции

немного комментария к тексту кода: адрес указывать (область, город улица, номер дома) через пробелы. При геокодировании возможен возврат нескольких координат, в данном случае берется первый.

вторая - получение точек маршрута от routing machine

Функция ПолучитьМаршрут(МассивАдресов)

	оср = Новый HTTPСоединение("router.project-osrm.org", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
	мТочки = Новый Массив;
	Для каждого Точка Из МассивАдресов Цикл
		мТочки.Добавить(Формат(Точка.Долгота, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0") + "," + Формат(Точка.Широта, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0"));
	КонецЦикла;
	Попытка
		Запрос = Новый HTTPЗапрос("/route/v1/driving/" + СтрСоединить(мТочки, ";") + "?overview=false&alternatives=true&steps=true");
		Ответ = оср.Получить(Запрос);
	Исключение
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес" + Символы.ПС + "Описание: " + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	Попытка
		СтруктМаршрута = ПрочитатьJSON(ЧтениеJSON);
	Исключение
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес:" + Символы.ПС + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	Если СтруктМаршрута.Свойство("code") Тогда
		Если НРег(СтруктМаршрута.code) = "ok" Тогда
			Результат = Новый Структура("Маршрут,АльтМаршрут"); 
			Если СтруктМаршрута.routes.Количество() Тогда
				Результат.Маршрут = Новый Массив;
				Для каждого Нога Из СтруктМаршрута.routes[0].legs Цикл
					Для каждого ШагМаршрута Из Нога.steps Цикл
						Для каждого Секция Из ШагМаршрута.intersections Цикл
							Результат.Маршрут.Добавить(Новый Структура("Долгота,Широта", Секция.location[0], Секция.location[1]));
						КонецЦикла;
					КонецЦикла;
				КонецЦикла;
				Если СтруктМаршрута.routes.Количество() > 1 Тогда
					Результат.АльтМаршрут = Новый Массив;
					Для каждого Нога Из СтруктМаршрута.routes[0].legs Цикл
						Для каждого ШагМаршрута Из Нога.steps Цикл
							Для каждого Секция Из ШагМаршрута.intersections Цикл
								Результат.АльтМаршрут.Добавить(Новый Структура("Долгота,Широта", Секция.location[0], Секция.location[1]));
							КонецЦикла;
						КонецЦикла;
					КонецЦикла;
				КонецЕсли;
			КонецЕсли;
			Возврат Результат;
		Иначе
			Возврат Неопределено;
		КонецЕсли;
	ИначеЕсли СтруктМаршрута.Свойство("message") Тогда
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес:" + Символы.ПС + СтруктМаршрута.message);
		Возврат Неопределено;
	КонецЕсли;

КонецФункции // ПолучитьМаршрут()

МассивАдресов - передаем сюда наш массив, полученный в первой процедуре. Для более оптимальной работы, предлагаю хранить координаты в контактной информации объекта (напр. контрагента), получать их на стадии создания адреса. Да забыл, здесь мы получаем не только основной маршрут но и альтернативный (массив АльтМаршрут в структуре результата), его мы нарисуем другим цветом.

3. Теперь нам осталось только создать на основании наших точек сам JS код, который нарисует на полилинию на карте,  и поставит точки начала и конца маршрута (ов).

Функция СформироватьJavaScriptМаршрута(МассивАдресов, Маршрут = Неопределено, АльтМаршрут = Неопределено) Экспорт

	КодМаршрута = "";
	Для каждого Адрес Из МассивАдресов Цикл
		КодМаршрута = КодМаршрута + "L.marker(["+Формат(Адрес.Широта, "ЧЦ=16; ЧДЦ=12; ЧРД=.; ЧГ=0")+", "+Формат(Адрес.Долгота, "ЧЦ=16; ЧДЦ=12; ЧРД=.; ЧГ=0")+"], {title: '" + Адрес.Адрес + "'}).addTo(map);
		|	";
	КонецЦикла;
	Если НЕ Маршрут = Неопределено Тогда
		мМаршрут = Новый Массив;
		Для каждого ТочкаМаршрута Из Маршрут Цикл
			мМаршрут.Добавить("[" + Формат(ТочкаМаршрута.Широта, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0")+", "+Формат(ТочкаМаршрута.Долгота, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0") + "]");
		КонецЦикла;
		КодМаршрута = КодМаршрута + "var latlngs = [" + СтрСоединить(мМаршрут, ",") + "];
		|	var polyline = L.polyline(latlngs, {color: 'red', weight: 5, opacity: 0.7}).addTo(map);
		|	map.fitBounds(polyline.getBounds());
		|	";
	КонецЕсли;
	Если НЕ АльтМаршрут = Неопределено Тогда
		мМаршрут.Очистить();
		Для каждого ТочкаМаршрута Из АльтМаршрут Цикл
			мМаршрут.Добавить("[" + Формат(ТочкаМаршрута.Широта, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0")+", "+Формат(ТочкаМаршрута.Долгота, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0") + "]");
		КонецЦикла;
		КодМаршрута = КодМаршрута + "var altlatlngs = [" + СтрСоединить(мМаршрут, ",") + "];
			|	var altpolyline = L.polyline(altlatlngs, {color: 'blue', weight: 5, opacity: 0.7}).addTo(map);
			|	map.fitBounds(altpolyline.getBounds());
			|	";
	КонецЕсли;
	
	Возврат КодМаршрута;

КонецФункции // СформироватьJavaScriptМаршрута()

Первым параметром передаем наш массив (с первой функции), вторым и третьим передаем массивы маршрутов со второй функции

Вот и все, теперь осталось подменить строки параметров в тексте HTML и засунуть его в наше поле карты.

Кому лень разбираться, предлагается тестовая обработка. Не судите строго ))

Тестовая обработка написана под УФ (тестировалось на платформе 8.3.11)

З.Ы. в построении маршрута обнаружился некий недочет - изгибы дорог и повороты (некоторые) почему то не учитываются, надо разбираться...

 

Обновлено 12.02.19 г.

Для более точной прорисовки изгибов и внутриквартальных поворотов, изменяем запрос к ресурсу routing machine:

"?overview=full&alternatives=true&steps=true&geometries=geojson&hints=;"

и немного дорабатываем процедуру обработки ответа:

Функция ПолучитьМаршрут(МассивАдресов)

	оср = Новый HTTPСоединение("router.project-osrm.org", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
	мТочки = Новый Массив;
	Для каждого Точка Из МассивАдресов Цикл
		мТочки.Добавить(Формат(Точка.Долгота, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0") + "," + Формат(Точка.Широта, "ЧЦ=15; ЧДЦ=12; ЧРД=.; ЧГ=0"));
	КонецЦикла;
	Попытка
		Запрос = Новый HTTPЗапрос("/route/v1/driving/" + СтрСоединить(мТочки, ";") + "?overview=full&alternatives=true&steps=true&geometries=geojson");
		Ответ = оср.Получить(Запрос);
	Исключение
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес" + Символы.ПС + "Описание: " + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	Попытка
		СтруктМаршрута = ПрочитатьJSON(ЧтениеJSON);
	Исключение
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес:" + Символы.ПС + ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
	Если СтруктМаршрута.Свойство("code") Тогда
		Если НРег(СтруктМаршрута.code) = "ok" Тогда
			Результат = Новый Структура("Маршрут,АльтМаршрут"); 
			Если СтруктМаршрута.routes.Количество() Тогда
				Результат.Маршрут = Новый Массив;
				ОсновнойМаршрут = СтруктМаршрута.routes[0];
				Если ОсновнойМаршрут.Свойство("geometry") И ОсновнойМаршрут.geometry.coordinates.Количество() Тогда
					Для каждого Координаты Из ОсновнойМаршрут.geometry.coordinates Цикл
						Результат.Маршрут.Добавить(Новый Структура("Долгота,Широта", Координаты[0], Координаты[1]));
					КонецЦикла;
				Иначе
					Для каждого Нога Из ОсновнойМаршрут.legs Цикл
						Для каждого ШагМаршрута Из Нога.steps Цикл
							Для каждого Секция Из ШагМаршрута.intersections Цикл
								Результат.Маршрут.Добавить(Новый Структура("Долгота,Широта", Секция.location[0], Секция.location[1]));
							КонецЦикла;
						КонецЦикла;
					КонецЦикла;
				КонецЕсли;
				Если СтруктМаршрута.routes.Количество() > 1 Тогда
					Результат.АльтМаршрут = Новый Массив;
					Альтернативный = СтруктМаршрута.routes[1];
					Если Альтернативный.Свойство("geometry") И Альтернативный.geometry.coordinates.Количество() Тогда
						Для каждого Координаты Из Альтернативный.geometry.coordinates Цикл
							Результат.АльтМаршрут.Добавить(Новый Структура("Долгота,Широта", Координаты[0], Координаты[1]));
						КонецЦикла;
					Иначе
						Для каждого Нога Из Альтернативный.legs Цикл
							Для каждого ШагМаршрута Из Нога.steps Цикл
								Для каждого Секция Из ШагМаршрута.intersections Цикл
									Результат.АльтМаршрут.Добавить(Новый Структура("Долгота,Широта", Секция.location[0], Секция.location[1]));
								КонецЦикла;
							КонецЦикла;
						КонецЦикла;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			Возврат Результат;
		Иначе
			Возврат Неопределено;
		КонецЕсли;
	ИначеЕсли СтруктМаршрута.Свойство("message") Тогда
		Сообщить("Ошибка при попытке маршутизации по OSR, адрес:" + Символы.ПС + СтруктМаршрута.message);
		Возврат Неопределено;
	КонецЕсли;

КонецФункции // ПолучитьМаршрут()

Обновлена обработка...

Обновлено 01.06.2020

Убираем параметр "hints=" из строки параметров запросов к ресурсу расчета маршрута!

Карты маршруты OpenStreetMap OSRM Leaflet

См. также

WEB-интеграция Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

72000 руб.

19.07.2024    1306    52    0    

3

Управление взаимоотношениями с клиентами (CRM) WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Подсистема интеграции Amo CRM с 1С: технические требования, порядок работы, возможности, доработки и обновления. Бесплатный период техподдержки - 1 месяц.

60000 руб.

07.05.2019    33058    62    41    

23

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    17698    49    50    

29

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14096    40    8    

16

Обмен с ГосИС Мастера заполнения WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Оперативный учет Управляемые формы 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Универсальное расширение конфигурации для автоматической загрузки и заполнения реквизитов контрагентов (партнеров) из ОГРН для 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.4), 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.2), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.5), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.4), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.3), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.4), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.0) и 1С:Бухгалтерия 8 (Бухгалтерия предприятия, редакция 3.0).

3900 руб.

08.11.2017    62788    403    295    

72
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mi1man 250 12.02.19 11:51 Сейчас в теме
".. З.Ы. в построении маршрута обнаружился некий недочет - изгибы дорог и повороты (некоторые) почему то не учитываются, надо разбираться..."

используйте rs_overview = "full"
2. Ditron 191 12.02.19 12:42 Сейчас в теме
(1) Благодарю, проверим...
3. Ditron 191 12.02.19 14:27 Сейчас в теме
(1) нет, не работает, не так надо, а вот так: &geometries=geojson (в запросе) тогда появится структура geometry а в ней массив с более точными координатами... обновлю статью и обработку... спасибо за пинок ))
user986734; +1 Ответить
4. pahalovo 13.02.19 09:11 Сейчас в теме
(3) А полученный geoJson от OSRM можно отправить в leaflet.js L.geoJSON(data). Очень удобно.
5. Ditron 191 13.02.19 11:19 Сейчас в теме
(4) да можно и так, там вообще можно много чего, да только некогда разбираться ))
6. пользователь 13.02.19 21:19
Сообщение было скрыто модератором.
...
7. пользователь 13.02.19 22:08
Сообщение было скрыто модератором.
...
8. qwed557 30 17.02.19 12:47 Сейчас в теме
Координаты получил, в списке адресов 2 точки, при нажатии построить маршрут выходит сообщение
Ошибка при попытке маршутизации по OSR, адрес:
Too Many Requests
9. Ditron 191 17.02.19 21:57 Сейчас в теме
(8)А перевести на русский не судьба? Сервис бесплатный, соответственно нагрузка большая, переводится как "Слишком много запросов", надеюсь дальше объяснять не надо? П.С. это я вывел как ошибку, а вообще это ответ сервера сервиса...
10. qwed557 30 18.02.19 15:29 Сейчас в теме
(9)да нах такой сервис, в течении дня ни разу не построил маршрут, сколько не бы не тестил. и что то он бесплатный, пользы от него 0.
11. Ditron 191 18.02.19 15:47 Сейчас в теме
(10)ну извините, не мой сервис, хотя у меня у двух клиентов подсистема сделана маршрутизации, не жалуются, бывает конечно но не напрягает...
user986734; +1 Ответить
12. Ditron 191 18.02.19 15:50 Сейчас в теме
(10)там на routing machine есть несколько вариантов получения точек для построения полилинии, попробуйте получать в виде таблицы http://project-osrm.org/docs/v5.7.0/api/?language=cURL#table-service
13. Ditron 191 18.02.19 15:52 Сейчас в теме
14. Power_0N 46 09.09.19 09:44 Сейчас в теме
Можно вопрос? А что значит "В примере кода заменяются ссылки на неверные"?
Никак не могу понять правильно я интерпретирую фразу или нет: я должен заменить в примере неверные ссылки на верные? А что считается верным?
15. Ditron 191 09.09.19 11:50 Сейчас в теме
(14)Когда писал статью, и вставки кода делал, ИС почему-то заменял ссылки в коде на какую-то хрень)) В тексте (после кода) я указал то, что должно быть
16. Ditron 191 09.09.19 11:51 Сейчас в теме
(14)А лучше посмотреть файл макета в примере - обработке )
17. sasha777666 325 17.10.19 08:55 Сейчас в теме
Эта строчка "map.fitBounds(polyline.getBounds());" масштабирует карту так чтобы вся линия была в области видимости, как её изменить если у меня несколько линий (например 3: polyline1, polyline2, polyline3) ?
18. Ditron 191 17.10.19 12:01 Сейчас в теме
(17) у меня, все маршруты связаны между собой (т.е. последовательны), соответственно, для карты маршрут один получается, ставлю только маркеры в точках отправления (прибытия). По сути (в вашем случае), я так понимаю, нужно получить баунды каждого маршрута (линии) и из них сделать один баунд по мин и макс, а вот как конкретно, нужно читать АПИ, до этого дело у меня не дошло ))
20. sasha777666 325 17.10.19 13:52 Сейчас в теме
(19) Спасибо за ссылку, всё получилось. Оставлю тут мож кому пригодится:
координаты всех точек которые должны попасть в область видимости добавлял в переменную "КодТочекМасштабирования" в виде "[55.790831000000, 37.704207000000],[56.790831000000, 38.704207000000],[59.790831000000, 39.704207000000]" , в конце строчка "map.fitBounds(polyline.getBounds());" была заменена на "map.fitBounds([" + КодТочекМасштабирования + "]);"
21. Ditron 191 17.10.19 17:07 Сейчас в теме
22. palamars 08.11.19 18:32 Сейчас в теме
А как построить маршрут, где точка финиша совпадает с точкой старта? Ну, типичная задача объехать все магазины и вернуться...
23. Ditron 191 08.11.19 18:57 Сейчас в теме
Что мешает указать последней точкой равной первой ))
24. lk78 169 22.12.19 18:58 Сейчас в теме
а расстояние по маршруту как посчитать?
26. Ditron 191 23.12.19 12:10 Сейчас в теме
(24)в пакете маршрута (ответ от раут машины) есть расстояния) т.е. в методе получения маршрута посмотрите отладкой структуру ответа
25. lk78 169 22.12.19 19:24 Сейчас в теме
есть возможность вывести линейку на карту? для измерения расстояние между точками
27. Ditron 191 23.12.19 12:11 Сейчас в теме
28. zenechka 546 26.12.19 13:36 Сейчас в теме
На одном компьютере не отображается карта: ( https://pastenow.ru/b29f76957f8356fceaabfc02a877aee4 )
При этом на другом все ок. Не сталкивались, какие настройки / права на это могут влиять? В какую сторону копать?
29. Ditron 191 26.12.19 13:52 Сейчас в теме
(28)проблема скорее всего в интернет соединении
30. zenechka 546 26.12.19 14:09 Сейчас в теме
(29) а куда должен быть доступ?
В целом на этом компьютере есть интернет подключение (наример, на сайт http://1c.ru/ в браузере можно зайти), но с ограничениями.
К каким ресурсам по каким протоколам и через какие порты нужен доступ для данного функционала, вот это бы понять...
31. Ditron 191 26.12.19 16:22 Сейчас в теме
(30)ну как минимум на ресурсы используемые, смотрите в код и в макет HTML
32. Ditron 191 26.12.19 16:23 Сейчас в теме
(30)в описании к публикации все есть, смотрите внимательно...
33. rhtr 91 11.02.20 09:26 Сейчас в теме
Подскажите пожалуйста, как можно вывести "title" сразу на экран?

L.marker([60.956771850585, 76.567138671875], {title: '1'}).addTo(map);
34. Ditron 191 11.02.20 13:05 Сейчас в теме
(33)нет, на меркере не получится, можно использовать popup https://leafletjs.com/reference-1.4.0.html#popup

п.с. не ленитесь читать документацию ;-)
35. rhtr 91 12.02.20 07:15 Сейчас в теме
(34) Спасибо, конечно. Документацию читал, но решение так и не нашёл, выкрутился с помощью плагина
https://leaflet.github.io/Leaflet.label/leaflet.label.js
и https://leaflet.github.io/Leaflet.label/leaflet.label.css

Кусочек кода html: L.marker([60.955352783203, 76.569305419921]).bindLabel('Точка1', { noHide: true }).addTo(map);
Не совсем то что я хотел, но заказчик доволен.
36. Ditron 191 12.02.20 11:22 Сейчас в теме
(35)и вам спасибо за кусочек кода )) может и пригодится
37. palamars 27.03.20 16:48 Сейчас в теме
А как же программно определить порядок точек, уже просчитанного маршрута?
Неужели только сравнивать координаты?
38. Ditron 191 27.03.20 16:51 Сейчас в теме
(37)порядок можно выставить по расстоянию между ними, или отсортировать по возврастанию расстояния или использовать роут машину http://project-osrm.org/docs/v5.7.0/api/#table-service
39. romanagatiy 2 13.05.20 16:57 Сейчас в теме
Товарищи, может кто подскажет, как подружить этот скрипт с мобильным приложением на android (8.3.15)? Отображается пустое поле HTML...
Пробовал подключать leaflet последней версии...
Также мущает тег "<meta http-equiv=""X-UA-Compatible"" content=""IE=9""/>"...Но альтернативы не нашел...В html js ноль....
40. Ditron 191 13.05.20 17:53 Сейчас в теме
41. romanagatiy 2 14.05.20 11:08 Сейчас в теме
(40)Если это шутка, будем считать, что я ее оценил) Так-то, в случае отсутствия в системе IE этот тег должен игнорироваться..а в андроиду IE посчастливилось не иметь. Но я попрробовал - не помогло(
42. Ditron 191 15.05.20 09:41 Сейчас в теме
(41) ну не совсем шутка, веб-кит все равно присутствует в платформе, надо тестировать, а возможно и ошибка мобильной платформы
43. romanagatiy 2 21.05.20 12:13 Сейчас в теме
Да, таки установка последнего релиза мобильной платформы (8.3.16.142) решила проблему
44. Ditron 191 21.05.20 12:24 Сейчас в теме
(43)рад, и как, отображение карт ОСРМ годное? на моб устройстве
45. user986734 01.06.20 16:38 Сейчас в теме
Сегодня в HTTPЗапрос параметр фрагмент "&hints=" перестал работать и стал не нужен.
Ошибка исправляется удалением из кода указанного фрагмента.
46. Ditron 191 01.06.20 17:30 Сейчас в теме
(45)да спасибо, я уже заметил, не успел публикацию обновить
user986734; +1 Ответить
47. TrueMage 05.06.20 09:00 Сейчас в теме
Господа, здравствуйте. У меня в июне вообще перестали считаться маршруты, каждый запрос возвращает либо 503 Service Unavailable, либо пустые данные расстояния и времени. Это у всех так?
50. Ditron 191 05.06.20 09:04 Сейчас в теме
51. Ditron 191 05.06.20 09:04 Сейчас в теме
(47) А точку с запятой убрал?) в конце параметра
48. TrueMage 05.06.20 09:02 Сейчас в теме
P.S. параметр "hints=" я убрал
49. Ditron 191 05.06.20 09:03 Сейчас в теме
А точку с запятой убрал?) в конце параметра
52. TrueMage 05.06.20 09:13 Сейчас в теме
53. Ditron 191 05.06.20 09:14 Сейчас в теме
(52)смотри в отладке, что возвращает При запросе
54. TrueMage 05.06.20 09:17 Сейчас в теме
Вот запрос прямо из отладчика, который возвращает пустые данные:
Запрос: /route/v1/driving/60.672025,56.8174151;60.672025,56.8174151?overview=false&alternatives=true&steps=true
Ответ: {"code":"Ok","waypoints":
[{"hint":"Tsg6gWw6lowAAAAALwAAAAAAAAAAAAAAAAAAAA2HnUEAAAAAAAAAAAAAAAAvAAAAAAAAAAAAAABoGwEAGcidAwf3YgMZyJ0DB_diAwAADwqD_w59","location":[60.672025,56.817415],"name":""},{"hint":"Tsg6gWw6lowAAAAALwAAAAAAAAAAAAAAAAAAAA2HnUEAAAAAAAAAAAAAAAAvAAAAAAAAAAAAAABoGwEAGcidAwf3YgMZyJ0DB_diAwAADwqD_w59","location":[60.672025,56.817415],"name":""}],"routes":[{"legs":[{"steps":[{"intersections":[{"out":0,"entry":[true],"location":[60.672025,56.817415],"bearings":[340]}],"driving_side":"right","geometry":"{cxyIe_iqJ??","duration":0,"distance":0,"name":"","weight":0,"mode":"driving","maneuver":{"bearing_after":340,"bearing_before":0,"type":"depart","location":[60.672025,56.817415]}},{"intersections":[{"in":0,"entry":[true],"location":[60.672025,56.817415],"bearings":[160]}],"driving_side":"right","geometry":"{cxyIe_iqJ","duration":0,"distance":0,"name":"","weight":0,"mode":"driving","maneuver":{"bearing_after":0,"bearing_before":340,"type":"arrive","location":[60.672025,56.817415]}}],"weight":0,"distance":0,"summary":"","duration":0}],"weight_name":"routability","weight":0,"distance":0,"duration":0}]}

Вот запрос, который возвращает 503:
Запрос: /route/v1/driving/60.672025,56.8174151;61.340069175,55.1822373?overview=false&alternatives=true&steps=true
Ответ: <!DO CTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<ht ml><head>
<title>503 Service Unavailable</title>
</head><body>
<h1>Service Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at router.project-osrm.org Port 443</address>
</body></html>
Показать
55. Ditron 191 05.06.20 09:34 Сейчас в теме
(54)странно, у меня все работает
56. Ditron 191 05.06.20 10:02 Сейчас в теме
(54)ща в инсомнии проверим твои запросы...
57. Ditron 191 05.06.20 10:13 Сейчас в теме
(54)дружище, у тебя чтото с координатами:
http://router.project-osrm.org/route/v1/driving/37.6004,48.7407;37.5968,48.7277?overview=full&alternatives=true&steps=true&geometries=geojso­n

{
  "code": "Ok",
  "waypoints": [
    {
      "hint": "6uHMhMLizIQtAAAAIAAAAAUAAAAAAAAAfZKMQr4xP0JJU_RAAAAAAC0AAAA­gAAAABQAAAAAAAACDGwEALrw9Aua45wKQvD0CXLnnAgEAbwcWrq75",
      "location": [
        37.600302,
        48.740582
      ],
      "name": "Дружби вулиця"
    },
    {
      "hint": "O_QSgFX1EoAMAAAAFwAAAAAAAAALAAAAmZycQaLuBUIAAAAA5jxUQgwAAAA­XAAAAAAAAAAsAAACDGwEAc609AlSF5wKArj0ClIbnAgAAvxIWrq75",
      "location": [
        37.596531,
        48.72738
      ],
      "name": "Паркова вулиця"
    }
  ],
  "routes": [
    {
      "legs": [
        {
          "steps": [
            {
              "intersections": [
                {
                  "out": 0,
                  "entry": [
                    true
                  ],
                  "location": [
                    37.600302,
                    48.740582
                  ],
                  "bearings": [
                    119
                  ]
                },
                {
                  "out": 1,
                  "in": 2,
                  "entry": [
                    true,
                    true,
                    false
                  ],
                  "location": [
                    37.602999,
                    48.739615
                  ],
                  "bearings": [
                    30,
                    120,
                    300
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.600302,
                    48.740582
                  ],
                  [
                    37.600873,
                    48.740377
                  ],
                  [
                    37.602339,
                    48.739851
                  ],
                  [
                    37.602999,
                    48.739615
                  ],
                  [
                    37.605222,
                    48.738814
                  ]
                ],
                "type": "LineString"
              },
              "duration": 29,
              "distance": 411,
              "name": "Дружби вулиця",
              "weight": 29,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 119,
                "location": [
                  37.600302,
                  48.740582
                ],
                "type": "depart",
                "bearing_before": 0,
                "modifier": "left"
              }
            },
            {
              "intersections": [
                {
                  "out": 1,
                  "in": 2,
                  "entry": [
                    true,
                    true,
                    false
                  ],
                  "location": [
                    37.605222,
                    48.738814
                  ],
                  "bearings": [
                    120,
                    210,
                    300
                  ]
                },
                {
                  "out": 2,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true,
                    true
                  ],
                  "location": [
                    37.600502,
                    48.73311
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.605222,
                    48.738814
                  ],
                  [
                    37.605093,
                    48.738657
                  ],
                  [
                    37.604315,
                    48.737712
                  ],
                  [
                    37.604007,
                    48.737354
                  ],
                  [
                    37.603323,
                    48.736526
                  ],
                  [
                    37.603175,
                    48.736347
                  ],
                  [
                    37.602669,
                    48.735734
                  ],
                  [
                    37.602642,
                    48.735702
                  ],
                  [
                    37.602284,
                    48.735268
                  ],
                  [
                    37.601804,
                    48.734692
                  ],
                  [
                    37.601192,
                    48.733947
                  ],
                  [
                    37.600599,
                    48.733229
                  ],
                  [
                    37.600502,
                    48.73311
                  ],
                  [
                    37.600403,
                    48.732992
                  ],
                  [
                    37.600276,
                    48.732839
                  ],
                  [
                    37.599911,
                    48.732409
                  ],
                  [
                    37.599784,
                    48.732257
                  ],
                  [
                    37.599434,
                    48.731836
                  ],
                  [
                    37.599243,
                    48.731607
                  ],
                  [
                    37.598763,
                    48.731016
                  ],
                  [
                    37.598258,
                    48.730404
                  ],
                  [
                    37.598221,
                    48.730359
                  ],
                  [
                    37.598162,
                    48.730288
                  ],
                  [
                    37.598135,
                    48.730254
                  ],
                  [
                    37.597576,
                    48.729575
                  ],
                  [
                    37.59745,
                    48.729424
                  ],
                  [
                    37.597343,
                    48.729295
                  ],
                  [
                    37.597319,
                    48.729265
                  ],
                  [
                    37.597067,
                    48.72896
                  ],
                  [
                    37.597006,
                    48.728886
                  ],
                  [
                    37.596765,
                    48.728595
                  ],
                  [
                    37.59643,
                    48.728192
                  ],
                  [
                    37.596041,
                    48.727717
                  ],
                  [
                    37.595941,
                    48.727596
                  ]
                ],
                "type": "LineString"
              },
              "duration": 137.1,
              "distance": 1421.4,
              "name": "Ювілейна вулиця",
              "weight": 137.1,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 208,
                "location": [
                  37.605222,
                  48.738814
                ],
                "type": "turn",
                "bearing_before": 118,
                "modifier": "right"
              }
            },
            {
              "intersections": [
                {
                  "out": 1,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true,
                    true
                  ],
                  "location": [
                    37.595941,
                    48.727596
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.595941,
                    48.727596
                  ],
                  [
                    37.596133,
                    48.727526
                  ],
                  [
                    37.596531,
                    48.72738
                  ]
                ],
                "type": "LineString"
              },
              "duration": 3.4,
              "distance": 49.5,
              "name": "Паркова вулиця",
              "weight": 3.4,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 118,
                "location": [
                  37.595941,
                  48.727596
                ],
                "type": "turn",
                "bearing_before": 208,
                "modifier": "left"
              }
            },
            {
              "intersections": [
                {
                  "in": 0,
                  "entry": [
                    true
                  ],
                  "location": [
                    37.596531,
                    48.72738
                  ],
                  "bearings": [
                    299
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.596531,
                    48.72738
                  ],
                  [
                    37.596531,
                    48.72738
                  ]
                ],
                "type": "LineString"
              },
              "duration": 0,
              "distance": 0,
              "name": "Паркова вулиця",
              "weight": 0,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 0,
                "location": [
                  37.596531,
                  48.72738
                ],
                "type": "arrive",
                "bearing_before": 119,
                "modifier": "left"
              }
            }
          ],
          "weight": 169.5,
          "distance": 1881.9,
          "summary": "Дружби вулиця, Ювілейна вулиця",
          "duration": 169.5
        }
      ],
      "weight_name": "routability",
      "geometry": {
        "coordinates": [
          [
            37.600302,
            48.740582
          ],
          [
            37.600873,
            48.740377
          ],
          [
            37.602339,
            48.739851
          ],
          [
            37.602999,
            48.739615
          ],
          [
            37.605222,
            48.738814
          ],
          [
            37.605093,
            48.738657
          ],
          [
            37.604315,
            48.737712
          ],
          [
            37.604007,
            48.737354
          ],
          [
            37.603323,
            48.736526
          ],
          [
            37.603175,
            48.736347
          ],
          [
            37.602669,
            48.735734
          ],
          [
            37.602642,
            48.735702
          ],
          [
            37.602284,
            48.735268
          ],
          [
            37.601804,
            48.734692
          ],
          [
            37.601192,
            48.733947
          ],
          [
            37.600599,
            48.733229
          ],
          [
            37.600502,
            48.73311
          ],
          [
            37.600403,
            48.732992
          ],
          [
            37.600276,
            48.732839
          ],
          [
            37.599911,
            48.732409
          ],
          [
            37.599784,
            48.732257
          ],
          [
            37.599434,
            48.731836
          ],
          [
            37.599243,
            48.731607
          ],
          [
            37.598763,
            48.731016
          ],
          [
            37.598258,
            48.730404
          ],
          [
            37.598221,
            48.730359
          ],
          [
            37.598162,
            48.730288
          ],
          [
            37.598135,
            48.730254
          ],
          [
            37.597576,
            48.729575
          ],
          [
            37.59745,
            48.729424
          ],
          [
            37.597343,
            48.729295
          ],
          [
            37.597319,
            48.729265
          ],
          [
            37.597067,
            48.72896
          ],
          [
            37.597006,
            48.728886
          ],
          [
            37.596765,
            48.728595
          ],
          [
            37.59643,
            48.728192
          ],
          [
            37.596041,
            48.727717
          ],
          [
            37.595941,
            48.727596
          ],
          [
            37.596133,
            48.727526
          ],
          [
            37.596531,
            48.72738
          ]
        ],
        "type": "LineString"
      },
      "weight": 169.5,
      "distance": 1881.9,
      "duration": 169.5
    },
    {
      "legs": [
        {
          "steps": [
            {
              "intersections": [
                {
                  "out": 0,
                  "entry": [
                    true
                  ],
                  "location": [
                    37.600302,
                    48.740582
                  ],
                  "bearings": [
                    299
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.600302,
                    48.740582
                  ],
                  [
                    37.599462,
                    48.740883
                  ],
                  [
                    37.599371,
                    48.740916
                  ]
                ],
                "type": "LineString"
              },
              "duration": 12.4,
              "distance": 77.7,
              "name": "Дружби вулиця",
              "weight": 12.4,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 299,
                "location": [
                  37.600302,
                  48.740582
                ],
                "type": "depart",
                "bearing_before": 0,
                "modifier": "right"
              }
            },
            {
              "intersections": [
                {
                  "out": 2,
                  "in": 1,
                  "entry": [
                    true,
                    false,
                    true,
                    true
                  ],
                  "location": [
                    37.599371,
                    48.740916
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                },
                {
                  "out": 1,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true
                  ],
                  "location": [
                    37.598444,
                    48.739778
                  ],
                  "bearings": [
                    30,
                    210,
                    300
                  ]
                },
                {
                  "out": 1,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true
                  ],
                  "location": [
                    37.597361,
                    48.738449
                  ],
                  "bearings": [
                    30,
                    210,
                    300
                  ]
                },
                {
                  "out": 2,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true,
                    true
                  ],
                  "location": [
                    37.596495,
                    48.737388
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                },
                {
                  "out": 2,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true,
                    true
                  ],
                  "location": [
                    37.594684,
                    48.735218
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.599371,
                    48.740916
                  ],
                  [
                    37.59928,
                    48.740804
                  ],
                  [
                    37.598444,
                    48.739778
                  ],
                  [
                    37.598256,
                    48.739548
                  ],
                  [
                    37.597639,
                    48.738791
                  ],
                  [
                    37.597361,
                    48.738449
                  ],
                  [
                    37.597211,
                    48.738266
                  ],
                  [
                    37.596997,
                    48.738003
                  ],
                  [
                    37.596828,
                    48.737795
                  ],
                  [
                    37.596685,
                    48.737621
                  ],
                  [
                    37.596495,
                    48.737388
                  ],
                  [
                    37.595897,
                    48.736671
                  ],
                  [
                    37.595395,
                    48.736069
                  ],
                  [
                    37.595359,
                    48.736026
                  ],
                  [
                    37.595311,
                    48.735969
                  ],
                  [
                    37.594791,
                    48.735345
                  ],
                  [
                    37.594684,
                    48.735218
                  ],
                  [
                    37.594604,
                    48.735122
                  ],
                  [
                    37.594368,
                    48.734839
                  ],
                  [
                    37.593885,
                    48.734261
                  ],
                  [
                    37.593248,
                    48.733498
                  ],
                  [
                    37.593061,
                    48.733274
                  ],
                  [
                    37.592925,
                    48.733111
                  ],
                  [
                    37.592735,
                    48.732883
                  ],
                  [
                    37.592544,
                    48.732654
                  ],
                  [
                    37.591733,
                    48.731682
                  ],
                  [
                    37.591097,
                    48.730912
                  ],
                  [
                    37.590801,
                    48.730553
                  ],
                  [
                    37.590706,
                    48.730437
                  ],
                  [
                    37.590198,
                    48.729829
                  ],
                  [
                    37.590106,
                    48.72971
                  ]
                ],
                "type": "LineString"
              },
              "duration": 137.2,
              "distance": 1419.7,
              "name": "Ярослава Мудрого вулиця",
              "weight": 137.2,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 208,
                "location": [
                  37.599371,
                  48.740916
                ],
                "type": "turn",
                "bearing_before": 298,
                "modifier": "left"
              }
            },
            {
              "intersections": [
                {
                  "out": 1,
                  "in": 0,
                  "entry": [
                    false,
                    true,
                    true
                  ],
                  "location": [
                    37.590106,
                    48.72971
                  ],
                  "bearings": [
                    30,
                    120,
                    300
                  ]
                },
                {
                  "out": 1,
                  "in": 3,
                  "entry": [
                    true,
                    true,
                    true,
                    false
                  ],
                  "location": [
                    37.595941,
                    48.727596
                  ],
                  "bearings": [
                    30,
                    120,
                    210,
                    300
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.590106,
                    48.72971
                  ],
                  [
                    37.590335,
                    48.729626
                  ],
                  [
                    37.591538,
                    48.729189
                  ],
                  [
                    37.591978,
                    48.729023
                  ],
                  [
                    37.593276,
                    48.728559
                  ],
                  [
                    37.594242,
                    48.728206
                  ],
                  [
                    37.594356,
                    48.728165
                  ],
                  [
                    37.594735,
                    48.728027
                  ],
                  [
                    37.595553,
                    48.727734
                  ],
                  [
                    37.595751,
                    48.727664
                  ],
                  [
                    37.595941,
                    48.727596
                  ],
                  [
                    37.596133,
                    48.727526
                  ],
                  [
                    37.596531,
                    48.72738
                  ]
                ],
                "type": "LineString"
              },
              "duration": 37.4,
              "distance": 537.9,
              "name": "Паркова вулиця",
              "weight": 37.4,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 118,
                "location": [
                  37.590106,
                  48.72971
                ],
                "type": "end of road",
                "bearing_before": 208,
                "modifier": "left"
              }
            },
            {
              "intersections": [
                {
                  "in": 0,
                  "entry": [
                    true
                  ],
                  "location": [
                    37.596531,
                    48.72738
                  ],
                  "bearings": [
                    299
                  ]
                }
              ],
              "driving_side": "right",
              "geometry": {
                "coordinates": [
                  [
                    37.596531,
                    48.72738
                  ],
                  [
                    37.596531,
                    48.72738
                  ]
                ],
                "type": "LineString"
              },
              "duration": 0,
              "distance": 0,
              "name": "Паркова вулиця",
              "weight": 0,
              "mode": "driving",
              "maneuver": {
                "bearing_after": 0,
                "location": [
                  37.596531,
                  48.72738
                ],
                "type": "arrive",
                "bearing_before": 119,
                "modifier": "left"
              }
            }
          ],
          "weight": 187,
          "distance": 2035.4,
          "summary": "Ярослава Мудрого вулиця, Паркова вулиця",
          "duration": 187
        }
      ],
      "weight_name": "routability",
      "geometry": {
        "coordinates": [
          [
            37.600302,
            48.740582
          ],
          [
            37.599462,
            48.740883
          ],
          [
            37.599371,
            48.740916
          ],
          [
            37.59928,
            48.740804
          ],
          [
            37.598444,
            48.739778
          ],
          [
            37.598256,
            48.739548
          ],
          [
            37.597639,
            48.738791
          ],
          [
            37.597361,
            48.738449
          ],
          [
            37.597211,
            48.738266
          ],
          [
            37.596997,
            48.738003
          ],
          [
            37.596828,
            48.737795
          ],
          [
            37.596685,
            48.737621
          ],
          [
            37.596495,
            48.737388
          ],
          [
            37.595897,
            48.736671
          ],
          [
            37.595395,
            48.736069
          ],
          [
            37.595359,
            48.736026
          ],
          [
            37.595311,
            48.735969
          ],
          [
            37.594791,
            48.735345
          ],
          [
            37.594684,
            48.735218
          ],
          [
            37.594604,
            48.735122
          ],
          [
            37.594368,
            48.734839
          ],
          [
            37.593885,
            48.734261
          ],
          [
            37.593248,
            48.733498
          ],
          [
            37.593061,
            48.733274
          ],
          [
            37.592925,
            48.733111
          ],
          [
            37.592735,
            48.732883
          ],
          [
            37.592544,
            48.732654
          ],
          [
            37.591733,
            48.731682
          ],
          [
            37.591097,
            48.730912
          ],
          [
            37.590801,
            48.730553
          ],
          [
            37.590706,
            48.730437
          ],
          [
            37.590198,
            48.729829
          ],
          [
            37.590106,
            48.72971
          ],
          [
            37.590335,
            48.729626
          ],
          [
            37.591538,
            48.729189
          ],
          [
            37.591978,
            48.729023
          ],
          [
            37.593276,
            48.728559
          ],
          [
            37.594242,
            48.728206
          ],
          [
            37.594356,
            48.728165
          ],
          [
            37.594735,
            48.728027
          ],
          [
            37.595553,
            48.727734
          ],
          [
            37.595751,
            48.727664
          ],
          [
            37.595941,
            48.727596
          ],
          [
            37.596133,
            48.727526
          ],
          [
            37.596531,
            48.72738
          ]
        ],
        "type": "LineString"
      },
      "weight": 187,
      "distance": 2035.4,
      "duration": 187
    }
  ]
}
Показать
58. TrueMage 05.06.20 12:22 Сейчас в теме
Хммм, но ведь эти координаты я получаю оттуда же, из ОСРМ... И до июня ведь все работало. Может теперь координаты как-то по-другому получать надо?
59. Ditron 191 05.06.20 12:30 Сейчас в теме
(58)не знаю даже чем помочь
user986734; TrueMage; +2 Ответить
60. TrueMage 05.06.20 15:45 Сейчас в теме
Все равно спасибо :)
61. user986734 09.06.20 14:55 Сейчас в теме
Добрый день!
Опять сегодня не работает:
{"message":"Query string malformed close to position 218","code":"InvalidQuery"}
Сами карты рисуются, но запрос не работает.
Запрос = Новый HTTPЗапрос("/route/v1/driving/" + СтрСоединить(мТочки, ";") + "?overview=full&alternatives=true&steps=true&geometries=geojso­n");
Может кто уже решил - отзовитесь пожалуйста!
62. Ditron 191 09.06.20 14:58 Сейчас в теме
(61)
Query string malformed close to position 218

перевожу: Строка запроса искажена вблизи позиции 218
посмотрите в отладчике результирующую строку "/route/v1/driving/" + СтрСоединить(мТочки, ";") + "?overview=full&alternatives=true&steps=true&geometries=geojso­­n" в позиции 218
user986734; +1 Ответить
63. user986734 09.06.20 15:11 Сейчас в теме
Похоже действительно нужно убрать точку с запятой. До сегодня работало.
Спасибо!
64. Ditron 191 09.06.20 15:13 Сейчас в теме
(63)точка с запятой если в конце то да, она является разделителем координат точек, т.е. точка это - 23.000,23.000
user986734; +1 Ответить
65. Fristayla 03.07.20 10:59 Сейчас в теме
Ребята, добрый день! Хорошая статья! Помогите решить вопрос как заставить всю эту систему выдавать расстояние по выбранному маршруту из предложенных данной обработкой?
66. Ditron 191 03.07.20 11:01 Сейчас в теме
(65)Добрый! так там все просто, нужно указать в параметре запроса "выводить альтернативные маршруты", и после получения запихивать их в список выбора, после выбора брать данные его
67. Ditron 191 03.07.20 11:03 Сейчас в теме
(65)в (57) посмотри пример ответа, там duration и distance, если укажешь "рассчитывать альтернативные" будет массив
user986734; Fristayla; +2 Ответить
68. Fristayla 03.07.20 14:36 Сейчас в теме
Супер спасибо! Единственное не понятно в каких измерениях там цифры?
71. Ditron 191 03.07.20 14:42 Сейчас в теме
69. Fristayla 03.07.20 14:36 Сейчас в теме
И еще если маршрут не устроит и хочется задать свой как в этом случае быть?. Может есть какие идеи?
70. Ditron 191 03.07.20 14:42 Сейчас в теме
(69)идея проста, у меня у клиента так сделано, путем интерактивного выбора с карты задаешь промежуточные точки которые передаешь в запрос (между начальным и конечным пунктом) )))
72. Fristayla 03.07.20 14:58 Сейчас в теме
Остается только разобраться как интерактивно работать с картой(((
73. Ditron 191 03.07.20 15:01 Сейчас в теме
ну дружище, это уж сам, просто сделай поле хтмл с адресом на ОСРМ и лови клики...
74. s79604116006 12.08.20 12:15 Сейчас в теме
У меня проблема на платформе 8.3.13, библиотека leaflet совместима с ней? у меня ругается на объект "L"
75. Ditron 191 12.08.20 12:22 Сейчас в теме
(74)вообще нет разницы какая платформа, могли изменится ссылки на джава скрипты почитайте апи лифлет
76. s79604116006 12.08.20 13:41 Сейчас в теме
Дело в том что я попробовал разные версии leaflet библиотек и у меня ругается на переменную L , последовательность подключения библиотек перепроверил , тоже самое на платформе 8.3.13 не смог побороть? есть вариант рабочий именно с этой версией платформы?
77. Ditron 191 12.08.20 16:09 Сейчас в теме
(76)когда писал пробовал и на этой версии, но возможно в вашем релизе платформы ошибка, естественно нет версий разных. Почитайте ошибки платформы для вашего конкретного релиза на сайте ИТС
80. s79604116006 15.08.20 18:29 Сейчас в теме
(77) На сайте ошибок применительно к этой теме не увидел, несколько раз пытался прикрепить код , но модерация не пропускает, поэтому обозначу вопрос словесно , версия платформы 8.3.13.1690 . подключаю библиотеку лифлет последовательно по инструкции, текст в макете, но при передачи текста кода макета элементу с типом HTML документ, выдает ошибку что "Ошибка переменная "L" не найдена" на первой же строчке var map = L.map('map').setView. Режим совместимости в заголовке в теге <met a> указал IE9
81. Ditron 191 17.08.20 11:55 Сейчас в теме
(80)на других релизах платформы пробовали?
user986734; +1 Ответить
82. s79604116006 19.08.20 10:53 Сейчас в теме
(81) ага буквально на версии 8.3.13.1920 уже работает обработка, но на версии 8.3.13.1690 ошибка . Может есть версия библиотеки которая работает? как я и говорил обновиться не вариант. Лицензия + конфигурация самописная
83. Ditron 191 19.08.20 13:14 Сейчас в теме
(82)ну вы же понимаете что проблема в обработке js в самой платформе вашего релиза, библиотеки leaflet написаны не мной и не для 1С
user986734; +1 Ответить
84. Ditron 191 19.08.20 13:16 Сейчас в теме
(82)и не пойму при чем тут лицензия, у вас что лицензия на конкретный релиз, и как билд релиза может повлиять на вашу самописную конфигурацию, наоборот вам лучше обновить (неизвестно какие еще могут быть ошибки в вашем билде платформы)
user986734; +1 Ответить
85. s79604116006 19.08.20 13:48 Сейчас в теме
(84) да согласен полностью но не от меня зависит, в любом случае причина ясна , на уровне конкретного билда, спс
86. Ditron 191 19.08.20 13:50 Сейчас в теме
(85)ну тогда "убеждение" с логическим обоснованием вам в помощь )
user986734; +1 Ответить
78. пользователь 12.08.20 19:14
Сообщение было скрыто модератором.
...
79. пользователь 14.08.20 17:10
Сообщение было скрыто модератором.
...
87. user986734 18.09.20 07:55 Сейчас в теме
Всем Привет!
Второй день сервис не работает! Может кто решил уже - поделитесь решением.
88. Ditron 191 18.09.20 10:02 Сейчас в теме
(87)у моих клиентов работает, пожалуйста пишите ошибки, что бы было понятно откуда ноги растут)
user986734; +1 Ответить
89. пользователь 18.09.20 10:20
Сообщение было скрыто модератором.
...
90. user986734 18.09.20 10:24 Сейчас в теме
(88)Ошибка в строке:
СтруктМаршрута = ПрочитатьJSON(ЧтениеJSON);
Вчера начало зависать перед этим на пару минут. После чего вываливается с ошибкой
91. пользователь 18.09.20 10:25
Сообщение было скрыто модератором.
...
93. Ditron 191 18.09.20 10:36 Сейчас в теме
(90)что-то похожее было, скорее всего ; или , не там стоит, посмотри в отладке на текст самого JSON, вероятно у них ошибка, как вариант (временный), найти неверный синтаксис и удалить его самостоятельно перед выполнением ПрочитатьJSON
user986734; +1 Ответить