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

13.09.21

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

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

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

Наименование Файл Версия Размер
Обработка "Работа с картами OSR"
.epf 12,25Kb
181
.epf 1.1 12,25Kb 181 Скачать

Берем 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

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15748    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17551    6    15    

13

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16360    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88580    160    215    

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

используйте rs_overview = "full"
2. Ditron 184 12.02.19 12:42 Сейчас в теме
(1) Благодарю, проверим...
3. Ditron 184 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 184 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 184 17.02.19 21:57 Сейчас в теме
(8)А перевести на русский не судьба? Сервис бесплатный, соответственно нагрузка большая, переводится как "Слишком много запросов", надеюсь дальше объяснять не надо? П.С. это я вывел как ошибку, а вообще это ответ сервера сервиса...
10. qwed557 30 18.02.19 15:29 Сейчас в теме
(9)да нах такой сервис, в течении дня ни разу не построил маршрут, сколько не бы не тестил. и что то он бесплатный, пользы от него 0.
11. Ditron 184 18.02.19 15:47 Сейчас в теме
(10)ну извините, не мой сервис, хотя у меня у двух клиентов подсистема сделана маршрутизации, не жалуются, бывает конечно но не напрягает...
user986734; +1 Ответить
12. Ditron 184 18.02.19 15:50 Сейчас в теме
(10)там на routing machine есть несколько вариантов получения точек для построения полилинии, попробуйте получать в виде таблицы http://project-osrm.org/docs/v5.7.0/api/?language=cURL#table-service
13. Ditron 184 18.02.19 15:52 Сейчас в теме
14. Power_0N 42 09.09.19 09:44 Сейчас в теме
Можно вопрос? А что значит "В примере кода заменяются ссылки на неверные"?
Никак не могу понять правильно я интерпретирую фразу или нет: я должен заменить в примере неверные ссылки на верные? А что считается верным?
15. Ditron 184 09.09.19 11:50 Сейчас в теме
(14)Когда писал статью, и вставки кода делал, ИС почему-то заменял ссылки в коде на какую-то хрень)) В тексте (после кода) я указал то, что должно быть
16. Ditron 184 09.09.19 11:51 Сейчас в теме
(14)А лучше посмотреть файл макета в примере - обработке )
17. sasha777666 321 17.10.19 08:55 Сейчас в теме
Эта строчка "map.fitBounds(polyline.getBounds());" масштабирует карту так чтобы вся линия была в области видимости, как её изменить если у меня несколько линий (например 3: polyline1, polyline2, polyline3) ?
18. Ditron 184 17.10.19 12:01 Сейчас в теме
(17) у меня, все маршруты связаны между собой (т.е. последовательны), соответственно, для карты маршрут один получается, ставлю только маркеры в точках отправления (прибытия). По сути (в вашем случае), я так понимаю, нужно получить баунды каждого маршрута (линии) и из них сделать один баунд по мин и макс, а вот как конкретно, нужно читать АПИ, до этого дело у меня не дошло ))
20. sasha777666 321 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 184 17.10.19 17:07 Сейчас в теме
22. palamars 08.11.19 18:32 Сейчас в теме
А как построить маршрут, где точка финиша совпадает с точкой старта? Ну, типичная задача объехать все магазины и вернуться...
23. Ditron 184 08.11.19 18:57 Сейчас в теме
Что мешает указать последней точкой равной первой ))
24. lk78 189 22.12.19 18:58 Сейчас в теме
а расстояние по маршруту как посчитать?
26. Ditron 184 23.12.19 12:10 Сейчас в теме
(24)в пакете маршрута (ответ от раут машины) есть расстояния) т.е. в методе получения маршрута посмотрите отладкой структуру ответа
25. lk78 189 22.12.19 19:24 Сейчас в теме
есть возможность вывести линейку на карту? для измерения расстояние между точками
27. Ditron 184 23.12.19 12:11 Сейчас в теме
28. zenechka 542 26.12.19 13:36 Сейчас в теме
На одном компьютере не отображается карта: ( https://pastenow.ru/b29f76957f8356fceaabfc02a877aee4 )
При этом на другом все ок. Не сталкивались, какие настройки / права на это могут влиять? В какую сторону копать?
29. Ditron 184 26.12.19 13:52 Сейчас в теме
(28)проблема скорее всего в интернет соединении
30. zenechka 542 26.12.19 14:09 Сейчас в теме
(29) а куда должен быть доступ?
В целом на этом компьютере есть интернет подключение (наример, на сайт http://1c.ru/ в браузере можно зайти), но с ограничениями.
К каким ресурсам по каким протоколам и через какие порты нужен доступ для данного функционала, вот это бы понять...
31. Ditron 184 26.12.19 16:22 Сейчас в теме
(30)ну как минимум на ресурсы используемые, смотрите в код и в макет HTML
32. Ditron 184 26.12.19 16:23 Сейчас в теме
(30)в описании к публикации все есть, смотрите внимательно...
33. rhtr 90 11.02.20 09:26 Сейчас в теме
Подскажите пожалуйста, как можно вывести "title" сразу на экран?

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

п.с. не ленитесь читать документацию ;-)
35. rhtr 90 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 184 12.02.20 11:22 Сейчас в теме
(35)и вам спасибо за кусочек кода )) может и пригодится
37. palamars 27.03.20 16:48 Сейчас в теме
А как же программно определить порядок точек, уже просчитанного маршрута?
Неужели только сравнивать координаты?
38. Ditron 184 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 184 13.05.20 17:53 Сейчас в теме
41. romanagatiy 2 14.05.20 11:08 Сейчас в теме
(40)Если это шутка, будем считать, что я ее оценил) Так-то, в случае отсутствия в системе IE этот тег должен игнорироваться..а в андроиду IE посчастливилось не иметь. Но я попрробовал - не помогло(
42. Ditron 184 15.05.20 09:41 Сейчас в теме
(41) ну не совсем шутка, веб-кит все равно присутствует в платформе, надо тестировать, а возможно и ошибка мобильной платформы
43. romanagatiy 2 21.05.20 12:13 Сейчас в теме
Да, таки установка последнего релиза мобильной платформы (8.3.16.142) решила проблему
44. Ditron 184 21.05.20 12:24 Сейчас в теме
(43)рад, и как, отображение карт ОСРМ годное? на моб устройстве
45. user986734 01.06.20 16:38 Сейчас в теме
Сегодня в HTTPЗапрос параметр фрагмент "&hints=" перестал работать и стал не нужен.
Ошибка исправляется удалением из кода указанного фрагмента.
46. Ditron 184 01.06.20 17:30 Сейчас в теме
(45)да спасибо, я уже заметил, не успел публикацию обновить
user986734; +1 Ответить
47. TrueMage 05.06.20 09:00 Сейчас в теме
Господа, здравствуйте. У меня в июне вообще перестали считаться маршруты, каждый запрос возвращает либо 503 Service Unavailable, либо пустые данные расстояния и времени. Это у всех так?
50. Ditron 184 05.06.20 09:04 Сейчас в теме
51. Ditron 184 05.06.20 09:04 Сейчас в теме
(47) А точку с запятой убрал?) в конце параметра
48. TrueMage 05.06.20 09:02 Сейчас в теме
P.S. параметр "hints=" я убрал
49. Ditron 184 05.06.20 09:03 Сейчас в теме
А точку с запятой убрал?) в конце параметра
52. TrueMage 05.06.20 09:13 Сейчас в теме
53. Ditron 184 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 184 05.06.20 09:34 Сейчас в теме
(54)странно, у меня все работает
56. Ditron 184 05.06.20 10:02 Сейчас в теме
(54)ща в инсомнии проверим твои запросы...
57. Ditron 184 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 184 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 184 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 184 09.06.20 15:13 Сейчас в теме
(63)точка с запятой если в конце то да, она является разделителем координат точек, т.е. точка это - 23.000,23.000
user986734; +1 Ответить
65. Fristayla 03.07.20 10:59 Сейчас в теме
Ребята, добрый день! Хорошая статья! Помогите решить вопрос как заставить всю эту систему выдавать расстояние по выбранному маршруту из предложенных данной обработкой?
66. Ditron 184 03.07.20 11:01 Сейчас в теме
(65)Добрый! так там все просто, нужно указать в параметре запроса "выводить альтернативные маршруты", и после получения запихивать их в список выбора, после выбора брать данные его
67. Ditron 184 03.07.20 11:03 Сейчас в теме
(65)в (57) посмотри пример ответа, там duration и distance, если укажешь "рассчитывать альтернативные" будет массив
user986734; Fristayla; +2 Ответить
68. Fristayla 03.07.20 14:36 Сейчас в теме
Супер спасибо! Единственное не понятно в каких измерениях там цифры?
71. Ditron 184 03.07.20 14:42 Сейчас в теме
69. Fristayla 03.07.20 14:36 Сейчас в теме
И еще если маршрут не устроит и хочется задать свой как в этом случае быть?. Может есть какие идеи?
70. Ditron 184 03.07.20 14:42 Сейчас в теме
(69)идея проста, у меня у клиента так сделано, путем интерактивного выбора с карты задаешь промежуточные точки которые передаешь в запрос (между начальным и конечным пунктом) )))
72. Fristayla 03.07.20 14:58 Сейчас в теме
Остается только разобраться как интерактивно работать с картой(((
73. Ditron 184 03.07.20 15:01 Сейчас в теме
ну дружище, это уж сам, просто сделай поле хтмл с адресом на ОСРМ и лови клики...
74. s79604116006 12.08.20 12:15 Сейчас в теме
У меня проблема на платформе 8.3.13, библиотека leaflet совместима с ней? у меня ругается на объект "L"
75. Ditron 184 12.08.20 12:22 Сейчас в теме
(74)вообще нет разницы какая платформа, могли изменится ссылки на джава скрипты почитайте апи лифлет
76. s79604116006 12.08.20 13:41 Сейчас в теме
Дело в том что я попробовал разные версии leaflet библиотек и у меня ругается на переменную L , последовательность подключения библиотек перепроверил , тоже самое на платформе 8.3.13 не смог побороть? есть вариант рабочий именно с этой версией платформы?
77. Ditron 184 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 184 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 184 19.08.20 13:14 Сейчас в теме
(82)ну вы же понимаете что проблема в обработке js в самой платформе вашего релиза, библиотеки leaflet написаны не мной и не для 1С
user986734; +1 Ответить
84. Ditron 184 19.08.20 13:16 Сейчас в теме
(82)и не пойму при чем тут лицензия, у вас что лицензия на конкретный релиз, и как билд релиза может повлиять на вашу самописную конфигурацию, наоборот вам лучше обновить (неизвестно какие еще могут быть ошибки в вашем билде платформы)
user986734; +1 Ответить
85. s79604116006 19.08.20 13:48 Сейчас в теме
(84) да согласен полностью но не от меня зависит, в любом случае причина ясна , на уровне конкретного билда, спс
86. Ditron 184 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 184 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 184 18.09.20 10:36 Сейчас в теме
(90)что-то похожее было, скорее всего ; или , не там стоит, посмотри в отладке на текст самого JSON, вероятно у них ошибка, как вариант (временный), найти неверный синтаксис и удалить его самостоятельно перед выполнением ПрочитатьJSON
user986734; +1 Ответить
94. user986734 18.09.20 10:45 Сейчас в теме
(93) ; убирал ранее. теперь до ответа не доходит. Сервис недоступен.
95. user986734 18.09.20 10:54 Сейчас в теме
(93)Только со вчерашнего дня, примерно с 11:00
Не работает ни один из примеров с их ресурса project-osrm.org
Сервис не доступен, хотя пингуется

В отладчике
Ответ
КодСостояния 503

ЧтениеJSON
ТекущееЗначение Текущее значение JSON не может быть получено
96. Ditron 184 18.09.20 10:59 Сейчас в теме
(95)проблема на ресурсе! тело ответа:
<!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 80</address>
</body></html>
Показать
user986734; +1 Ответить
97. user986734 18.09.20 11:01 Сейчас в теме
(96)Т.е. Проблема у поставщика сервиса, ничего не делаем, Ждем?
Спасибо!
92. user986734 18.09.20 10:26 Сейчас в теме
(88)Отправил более подробное описание. Оно пока на модерации.
98. Ditron 184 18.09.20 11:01 Сейчас в теме
"Сервер временно не может обслуживать ваш
запрос из-за вынужденного бездействия или недостаточности мощности.
Пожалуйста, попробуйте позже"
user986734; +1 Ответить
99. Romyl01 37 29.10.20 10:59 Сейчас в теме
(98) так что osm счас работает, а то дали в разработку подобное решение стоит пробовать на osm?
Оставьте свое сообщение