Показаны сообщения с ярлыком геокодирование. Показать все сообщения
Показаны сообщения с ярлыком геокодирование. Показать все сообщения

понедельник, 3 октября 2016 г.

Использование службы геокодирования Google в 1С 7.7 + чтение динамических страниц

Задание: В 1С для каждой торговой точки записан адрес, необходимо по адресу торговой точки получить ее координаты, для последующего отображения на карте.

Решение: Для получения координат ТТ по адресу используется Google Maps Geocoding API, описание и документация здесь: https://developers.google.com/maps/documentation/geocoding/intro?hl=ru


"Быстрое" решение - использование функций v7plus.dll:

Функция ПолучитьОтветСлужбыГеокодирования(_Адрес)
 
    Попытка
        Соединение = СоздатьОбъект("Addin.V7HttpReader");
        Соединение.КоличествоПопытокАвторизации = 10;
    Исключение
        Сообщить("Не удалось создать объект Addin.V7HttpReader!");
        Возврат 0;
    КонецПопытки;
   
    //
можем указать json или xml
    Адрес = "http://maps.googleapis.com/maps/api/geocode/xml?address=";
    Адрес = Адрес + "ukraine" + "," + СокрЛП(_Адрес);
    Адрес = Адрес + "&components=country:UA";
 
    Стр = ""; // сюда вернется xml или json ответ сервера, который 
    Попытка
        Соединение.Получить(Адрес, Стр, 2); //строка
    Исключение
        Сообщить("Неудачная попытка соединения.");
    КонецПопытки;
   
    Возврат стр;

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

"Быстрое" решение было рабочим, однако, периодически ответ сервера усекался до 1-2 килобайт. При этом если строку запроса вставить в браузер - всегда возвращается нормальный ответ.

Оказалось, проблема известная, рассматривалась неоднократно:

1. V7Plus не полностью выкачивает страничку
"AddIn.V7HttpReader прекрасно работает с любыми страницами и качает всю как надо. Проблема в самих страницах, которые не отдают заголовок "Content-length". Поэтому по-умолчанию используется 1Кб."


2.V7HttpReader метод получить файл
"С помощью метода ПолучитьКакФайл пытаюсь с сайта выгрузить файл xml нужного формата. Проблема - файл не загружается полностью. ... Пробовал по всякому и через ПолучитьКакСтроку и с циклом после получения (типа для докачивания, если оно в фоне).
Все-равно файл загружается не полностью. Если через браузер все скачивается без проблем."

"Это не работает, когда динамически генерируется страница через пост-запрос. ПолучитьКакФайл работает для скачивания ТОЛЬКО статического содержимого."

И приводится код решения:
    Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.language = "vbscript";
          
    x = CreateObject("Microsoft.XMLHTTP");
    x.Open("GET", АдресСтраницы, 0,"","");
    x.Send();
          
    s = CreateObject("ADODB.Stream");
    s.Mode = 3;
    s.Type = 1;
    s.Open();
          
    Скрипт.AddObject("s",s);
    Скрипт.AddObject("x",x);
    Скрипт.Eval("s.Write(x.responseBody)");
          
    s.SaveToFile(ИмяФайлаЗагрузки, 2);
3. Наиболее подробно и полно вопрос рассматривается здесь: Мои опыты чтения динамических WEB-страниц
  • Вариант 1-5 - различные модификации использования V7HttpReader, и делается вывод, что внешняя компонента v7plus.dll и ее объект AddIn.V7HttpReader не годятся для чтения  динамических WEB-страниц.
  • Вариант 6:  ФС.КопироватьФайл(Адрес,Результат) - нерабочий
  • Вариант 7: WinHttp.WinHttpRequest.5.1
  • Вариант 8: InternetExplorer.Application
  • Вариант 9. MSXML2.XMLHTTP
  • Вариант 10. WinHttp.WinHttpRequest.5.1 + MSScriptControl
  • Вариант 11.MSXML2.XMLHTTP +  MSScriptControl  + VBScript
  • Вариант 12. MSXML2.XMLHTTP (http-test.vbs + WScript.Shell)
  • Вариант 13. Microsoft.XMLHTTP+ MSScriptControl+ADODB.Stream

В итоге, пришлось переписать процедуру на вариант с использованием Microsoft.XMLHTTP +
ADODB.Stream + MSScriptControl.ScriptControl.

Код функции под катом:

четверг, 5 июня 2014 г.

GPS: ссылки на ресурсы

Разное:
Карты городов Украины
Статьи о GPS - GPSinfo.Ru все о мире навигационных GPS технологий, форум о GPS, GPS и КПК, GPS навигаторы Garmin Magellan, карты для GPS
Как устроен Google Maps
GE_JPG_extractor
Выполнять преобразование координат стало проще
GPS - навигация . Навигационные карты для GPS
GPS - FAQ
Карты GPS навигаторов и интерактивные электронные карты
 
 
Google:
Веб-службы API Google Карт

Справочнике по языку YMapsML
API маршрутов Google


API матрицы расстояний Google




Google Maps for Work

Usage Limits for Google Maps API Web Services

Javascript API Google Карт (версия 3)

Google Developer Console - можно увеличить квоты на сервисы, каждый созданный проект - со своими квотами, добавление нового проекта - 1-2 минуты

API Google Карт: Часто задаваемые вопросы

Как получить ключ API? Google Maps API v2.

Ключ Google Map?

Ключи от гугловских карт? :: В помощь вебмастеру :: Компьютерный форум Ru.Board

Google APIs Console - старя и быстрая версия консоли

Google Javascript API Geocoding Limits - Stack Overflow

Google map markers | CTAPbIu_MABP's BLOG - полезный блог

NumericIcons - google-maps-icons - More than 1000 free and descriptive map POI markers, icons, for your maps - Google Project Hosting - генератор всяких иконок

Usage Limits for Google Maps API Web Services - Google Maps API for Work — Google Developers

Google Earth/Maps Icons - всякие иконки
Google {maps} - всякие иконки

Google Maps API Tutorial

gmaps-utility-library-dev - Repository of utility libraries that can be used with the Google Maps JavaScript API v2

google-maps-utility-library-v3 - Open source project to be a central repository of utility libraries that can be used with the Google Maps API JavaScript v3.


Яндекс: 

Клуб API Карт

Технологии Яндекса — API Карт — Начало работы с API

Технологии Яндекса — API Карт — Подключение API

Технологии Яндекса — API Карт — О Руководстве

Технологии Яндекса — Песочница

Yandex Маршрутизатор
Несколько своих стилизованных меток на Яндекс карте API 2.0

Visicom:
Visicom API