|
v7: Просчет маршрутов доставки | ☑ | ||
---|---|---|---|---|
0
linoblack
17.05.16
✎
15:54
|
Добрый день, нужен совет знатоков.
предприятие осуществляет доставку проданного товара покупателям. в базе уже имеются географические координаты с привязкой к торговым точкам и контрагентам. как бы мне побыстрее и попроще, используя бесплатные решения, сделать просчет километража по маршруту следования по картам? сами маршруты уже составлены и в базе есть - торговые точки расставлены в нужном порядке. |
|||
1
lodger
17.05.16
✎
16:15
|
так у вас маршруты уже составлены, или надо километраж считать с нуля?
|
|||
2
lodger
17.05.16
✎
16:16
|
яндекс.апи может по 2 точкам дать дальность пробега в километрах.
|
|||
3
Mikeware
17.05.16
✎
16:22
|
(2) это хохлы вроде. Для них тоже есть?
|
|||
4
Mikeware
17.05.16
✎
16:23
|
кстати, в 2гис такое работает. с учетом "однонаправленности" некоторых улиц, ну и т.п.
|
|||
5
linoblack
17.05.16
✎
16:28
|
(1) составлены только списки объезда торговых точек. но уже с учетом расположения. т.е. точки расставлены в порядке посещения. нужно теперь километраж посчитать.
|
|||
6
Mikeware
17.05.16
✎
16:29
|
(5) смотри апи гуглемапа.
|
|||
7
linoblack
17.05.16
✎
16:33
|
(6) гугла или все же яндекса? у кого карты лучше?
|
|||
8
Mikeware
17.05.16
✎
16:35
|
(7) в России я поставлю одинаково на яндекс ни на гуглю (и воспользуюсь 2гис), а вот вне россии - на гуглю.
|
|||
9
linoblack
17.05.16
✎
16:49
|
нашел пример работы в epf. как бы его посмотреть без восьмерки?
|
|||
10
Mikeware
17.05.16
✎
16:56
|
(9) посмотри в семерке
|
|||
11
Злопчинский
17.05.16
✎
16:56
|
на ИС посмотри - их там есть таких обработок
|
|||
12
ADirks
18.05.16
✎
09:47
|
А у кого-нибудь эти сервисы реально работают?
У нас примерно с февраля яндекс-карта сломалась. Причём, сломалась даже не карта наверное, а чё-то эти сволочи из мелкософта накрутили в эксплорере. Открываешь любой примитивный пример, и эта скотина пишет "в целях безопасности InternetExplorer не разрешает этому веб-узлу выполнение сценариев или элементов ActiveX, блаблабла". В активиксе, который в 1С встраивается, ничего такого не пишется, а просто не работает. Копание в настройках ИЕ ни разу не помогло. Я уж хотел было прикрутить любую другую карту, но внезапно выяснилось, что с ними со всеми такая шляпа. |
|||
13
linoblack
18.05.16
✎
17:15
|
(12) прям щас мучаю яндекс мап апи 1.0 - работает.
|
|||
14
ADirks
19.05.16
✎
08:43
|
(13) а можно примерчик какой-нить?
Работает именно в IE? В нормальных то браузерах всё и так работает, только IE выделывается. |
|||
15
smitti911
19.05.16
✎
09:51
|
У меня тоже с февраля не работает.В активиксе, который в 1С встраивается - просто не работает, но html-ку если открыть в IE - открывается и строит маршрут без ошибок.
|
|||
16
linoblack
19.05.16
✎
17:18
|
(14) в гугл хроме работает. геокодирование и отображение маршрута
|
|||
17
linoblack
19.05.16
✎
17:19
|
Функция ПолучитьШироту(ВыАдрес,Шир)
СтрокаAnsi = СОкрЛП(ВыАдрес); ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl"); ScrptCtrl.Language="vbscript"; ScrptCtrl.AddCode( "Function EncodeURIcomponent(SourceString) | Dim I, C, Out | For I = 1 To Len(SourceString) | C = Asc(Mid(SourceString, I, 1)) | '/// Пробелы заменяем на плюс | If C = 32 Then | EncodeURIcomponent = EncodeURIcomponent + ""%20"" | '/// Запрещённые символы заменяем на ""%"" и HEX значение от кода символа | ElseIf (C = 44) Then | EncodeURIcomponent = EncodeURIcomponent + "","" | ElseIf (C < 48 Or C > 126) Or (C > 56 And C <= 64) Then | EncodeURIcomponent = EncodeURIcomponent + ""%"" + Hex(C) | Else | '/// Разрещённые символы добавляем как есть | EncodeURIcomponent = EncodeURIcomponent + Chr(C) | End If | Next | End Function);" СтрокаURL = ScrptCtrl.CodeObject.EncodeURIcomponent(СтрокаAnsi); Сервер = "geocode-maps.yandex.ru"; Страница = "/1.x/?geocode="+СтрокаURL+"&key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ=="; HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); ЧтениеXML = гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент(); ИмяОбъекта = ""; urlSend = Сервер + Страница; HTTP.Open("GET","https://"+urlSend,0); HTTP.Send(); ЧтениеXML.СвязатьСоСтрокой(HTTP.responseText); ТабОбъектов = СоздатьОбъект("ТаблицаЗначений"); ТабОбъектов.НоваяКолонка("Адрес"); ТабОбъектов.НоваяКолонка("Широта"); ТабОбъектов.НоваяКолонка("Долгота"); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); Если ЧтениеXML.СвойстваТекущегоУзла.Имя = "metaDataProperty" Тогда ТипТега = ЧтениеXML.Следующий(); КонецЕсли; ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); Попытка Если ЧтениеXML.СвойстваТекущегоУзла.Имя = "metaDataProperty" Тогда ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Следующий(); КонецЕсли; Исключение КонецПопытки; ТипТега = ЧтениеXML.Следующий(); СтрокаКординат = ЧтениеXML.ТекущийЭлементВВидеСтроки(); //"<pos xmlns="http://www.opengis.net/gml">37.615165 55.731597</pos>" Темп = Найти(СтрокаКординат,"<pos>")+5; Темп2 = Найти (СтрокаКординат,"</pos>"); СтрокаКординат = Сред(СтрокаКординат,Темп,Темп2); //СтрокаКординат = СтрЗаменить(СтрокаКординат,"</pos>", "" ); СтрокаКординат = СтрЗаменить(СтрокаКординат, " ", РазделительСтрок); Широта = Число(СтрПолучитьСтроку(СтрокаКординат,2)); Долгота = Число(СтрПолучитьСтроку(СтрокаКординат,1)); Если ПустоеЗначение(Широта)=1 Тогда Широта =0 КонецЕсли; Если ПустоеЗначение(Долгота)=1 Тогда Долгота = 0 КонецЕсли; Если Шир = 1 Тогда Возврат Широта Иначе Возврат Долгота; КонецЕсли; КонецФункции //ПолучитьШироту |
|||
18
ADirks
20.05.16
✎
07:36
|
(16, 17) Это конечно здорово, но надо всё же чтобы карта отображалась.
|
|||
19
linoblack
20.05.16
✎
15:10
|
пример работы с картой
Процедура ОтобразитьМаршрут(ТЗТочкиМаршрута) Адреса = СоздатьОбъект("ТаблицаЗначений"); Адреса.НоваяКолонка("Адрес"); Адреса.НоваяКолонка("Широта"); Адреса.НоваяКолонка("Долгота"); СтаршийИндекс = ТЗТочкиМаршрута.КоличествоСтрок(); Для Сч = 1 по СтаршийИндекс Цикл Адреса.НоваяСтрока(); Адреса.Адрес = ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес"); Адреса.Широта = ПолучитьШироту(СокрЛп(ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес")),1); Адреса.Долгота = ПолучитьШироту(СокрЛп(ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес")),0); КонецЦикла; Файл = СоздатьОбъект("Текст"); Файл.ДобавитьСтроку("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"); Файл.ДобавитьСтроку("<html xmlns=""http://www.w3.org/1999/xhtml"">"); Файл.ДобавитьСтроку("<head>"); Файл.ДобавитьСтроку("<title>Обработка маршрута</title>"); Файл.ДобавитьСтроку("<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"" />"); Файл.ДобавитьСтроку("<script src=""https://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ=="" type=""text/javascript""></script>"); Файл.ДобавитьСтроку("<script type=""text/javascript"">"); Файл.ДобавитьСтроку("YMaps.jQuery(function () {"); Файл.ДобавитьСтроку("var map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]);"); Файл.ДобавитьСтроку("map.setCenter(new YMaps.GeoPoint(30.117269, 49.795806), 10);"); Текст = "var router = new YMaps.Router(["; Адреса.ВыбратьСтроки(); Пока Адреса.ПолучитьСтроку()=1 Цикл Текст = Текст + "new YMaps.GeoPoint(" + Адреса.Долгота + "," + Адреса.Широта + "),"; КонецЦикла; Текст = Текст + "],[],{viewAutoApply: true});"; Файл.ДобавитьСтроку(Текст); Файл.ДобавитьСтроку("map.addOverlay(router);"); Файл.ДобавитьСтроку("});"); Файл.ДобавитьСтроку("</script>"); Файл.ДобавитьСтроку("</head>"); Файл.ДобавитьСтроку("<body>"); Файл.ДобавитьСтроку("<div id=""YMapsID"" style=""width:800px;height:600px""></div>"); Файл.ДобавитьСтроку("</body>"); Файл.ДобавитьСтроку("</html>"); Файл.Записать("Маршрут.html"); ЗапуститьПриложение("Маршрут.html"); КонецПроцедуры |
|||
20
ADirks
20.05.16
✎
15:16
|
(19) Ну да, тоже в эту сторону начал колупать. Не шибко удобно, но хоть как-то. А то доставка бедная исстрадалась вся.
|
|||
21
trad
20.05.16
✎
15:47
|
(20) у мну работают якарты на апи 2.1
важны по-моему такие строки <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=9"></meta> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"> </script> |
|||
22
ADirks
23.05.16
✎
08:50
|
(21) Неа, не помогло.
я всё-же думаю, что дело в каких-то настройках IE. найти бы их ещё... |
|||
23
linoblack
23.05.16
✎
14:22
|
(21) не поделитесь?
|
|||
24
Карупян
23.05.16
✎
14:24
|
(22) Может в домене какие настройки включили?
|
|||
25
smitti911
01.06.16
✎
09:01
|
Решил проблему :
Действительно важны такие строки <meta http-equiv="X-UA-Compatible" content="IE=9"></meta> и еще To run a WebBrowser control in IE8 Standards Mode, use the following new value into the registry: [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] “1с77.exe” = dword 8000 (Hex: 0x1F40) |
|||
26
smitti911
01.06.16
✎
11:18
|
Как исправить ? В модальном режиме карта не двигается и не работают контролы линейка,масштаб и т.д. В обычном режиме все работает.
|
|||
27
trad
01.06.16
✎
11:35
|
(26) проверил. у меня в модальном режиме карта двигается, а вот контролы на click не реагируют, только на dblclick
|
|||
28
trad
01.06.16
✎
11:36
|
имхо не побороть, смотри в сторону отказа от мадального режима
|
|||
29
trad
01.06.16
✎
11:36
|
и вообще семерка в итоге упала ((
|
|||
30
smitti911
01.06.16
✎
11:37
|
У меня в модальном двигается только если хватануть за балун
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |