|
v7: Геокодирование и расстояние по карте | ☑ | ||
---|---|---|---|---|
0
linoblack
09.09.16
✎
17:02
|
Если кому интересно, то сабж быстренько можно организовать вот так. Очень просто через апи гугл-карт. Без заморочек с активиксами, яваскриптами и сериализацией
Перем гXMLАнализатор; Процедура ПриОткрытии(); Если ЗагрузитьВнешнююКомпоненту("v7plus.dll") <> 1 Тогда Предупреждение("Компонента v7plus.dll не найдена!"); СтатусВозврата(0); Возврат; КонецЕсли; гXMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); Если Число(гXMLАнализатор.ВерсияАнализатора) < 2 Тогда Предупреждение("Для работы с программой необходимо обновить внешнюю компоненту v7plus.dll !"); СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры Функция Геокод(Адрес) API_KEY = "тут ваш ключ"; СтрокаURL = СокрЛП(Адрес); Сервер = "maps.googleapis.com"; Страница = "/maps/api/geocode/xml?address="+СтрокаURL+"&key="+API_KEY; HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); ЧтениеXML = гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент(); ИмяОбъекта = ""; urlSend = Сервер + Страница; HTTP.Open("GET","https://"+urlSend,0); HTTP.Send(); ЧтениеXML.СвязатьСоСтрокой(HTTP.responseText); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Спуститься(); ИмяУзла = ЧтениеXML.СвойстваТекущегоУзла.Имя; Пока ИмяУзла<>"geometry" Цикл ТипТега = ЧтениеXML.Следующий(); ИмяУзла = ЧтениеXML.СвойстваТекущегоУзла.Имя; КонецЦикла; ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); Широта = ЧтениеXML.ТекущийЭлементВВидеСтроки(); Широта = Прав(Широта,СтрДлина(Широта)-5); Широта = Лев(Широта,СтрДлина(Широта)-6); ТипТега = ЧтениеXML.Следующий(); Долгота = ЧтениеXML.ТекущийЭлементВВидеСтроки(); Долгота = Прав(Долгота,СтрДлина(Долгота)-5); Долгота = Лев(Долгота,СтрДлина(Долгота)-6); Если ПустоеЗначение(Широта)=1 Тогда Широта =0 КонецЕсли; Если ПустоеЗначение(Долгота)=1 Тогда Долгота = 0 КонецЕсли; Рез = СоздатьОбъект("СписокЗначений"); Рез.ДобавитьЗначение(Широта,"Широта"); Рез.ДобавитьЗначение(Долгота,"Долгота"); Возврат (Рез); КонецФункции Функция Расстояние(Адрес1,Адрес2) API_KEY = "тут ваш ключ"; Сервер = "maps.googleapis.com"; Страница = "/maps/api/distancematrix/xml?origins="+СокрЛП(Адрес1)+"&destinations="+СокрЛП(Адрес2)+"&key="+API_KEY; HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); ЧтениеXML = гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент(); ИмяОбъекта = ""; urlSend = Сервер + Страница; HTTP.Open("GET","https://"+urlSend,0); HTTP.Send(); ЧтениеXML.СвязатьСоСтрокой(HTTP.responseText); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Спуститься(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Следующий(); ТипТега = ЧтениеXML.Спуститься(); Расстояние = ЧтениеXML.ТекущийЭлементВВидеСтроки(); Расстояние = Прав(Расстояние,СтрДлина(Расстояние)-7); Расстояние = Лев(Расстояние,СтрДлина(Расстояние)-8); Возврат(Расстояние); КонецФункции Процедура Сформировать() Рез = Геокод(ВыбАдрес); Широта = Рез.ПолучитьЗначение(1); Долгота = Рез.ПолучитьЗначение(2); сообщить(Широта); сообщить(Долгота); Расстояние = Расстояние(ВыбАдрес,ВыбАдрес2); сообщить(Расстояние); КонецПроцедуры |
|||
1
Смотрящий
09.09.16
✎
17:08
|
Поглядим, спс
|
|||
2
oleg_km
09.09.16
✎
18:24
|
Семерошник?
|
|||
3
linoblack
10.09.16
✎
12:31
|
(2) ну да, это ж ветка такая ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |