gifts2017

Определение Координат по Адресу через Google Maps

Опубликовал Александр Перевислый (sashapere) в раздел Программирование - Практика программирования

Определение Координат по Адресу через Google Maps

          Данная обработка не претендует на что-либо. Просто разбирался с применением Google Maps в 1с8, и в качестве подытоживания информации сделал небольшую обработку по определению координат.

         В ней решены некоторые типовые вопросы:

        - Возврат значения из JavaScript

       - Подпись Маркера

       - Добавление Информациооного Сообщения к маркеру

       - Решен вопрос с ожиданием асинхронного вызова функции геокодирования

      - Все Функции сделаны для управления Картой, непосредственно из 1с

 

 Обработка поможет разобратся с базовым Функционалом Google Maps , т.к. написана максимально доступна, без наворотов.

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

Наименование Файл Версия Размер
Координаты_Обычн 51
.epf 11,06Kb
01.09.13
51
.epf 01 11,06Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Яков Коган (Yashazz) 02.09.13 13:31
Если не секрет, как ловили асинхронный ответ метода геокодирования? Опросом через ОбработкаОжидания?
2. Александр Перевислый (sashapere) 02.09.13 14:57
(1) Yashazz, Делал так: сначала в джава скрипт передаю масив для записи тутда статуса, а потом в 1с уже проверяю состояние.


JAVA Scrtip
// Определяем местоположение по адресу
	// address - Искомый адрес
	// mas_result_lat - Возвращяемый массив со значениями Широты
	// mas_result_lng - Возвращяемый массив со значениями Долготы
	// stat           - Cостояние результата "IN PROGRESS" - ещё получает данные , "READY" - Данные получены , "ERROR" - ошибка получения данных
	function codeAddress_1c(address,mas_result_lat,mas_result_lng,stat) 
		{
		stat.Установить(0,"IN PROGRESS")
	
		geocoder.geocode( { 'address': address}, function(results, status) 
															{
															if (status == google.maps.GeocoderStatus.OK) 
																{
																for (var i in results)
																	{
																	mas_result_lat.Добавить(results[i].geometry.location.lat());
																	mas_result_lng.Добавить(results[i].geometry.location.lng());
																	}
																
																stat.Установить(0, "READY");
																
																} 
															else 
																{
																stat.Установить(0, "ERROR");
																//alert("Ошибка геокодера! Причина: " + status);
																}
															} 
						);
		} 
...Показать Скрыть






1C

	результат = ЭлементыФормы.Карта.Документ.parentWindow.codeAddress_1c( лок_Адрес , мас_широты,мас_долготы,статус);


// т.к. функция работает асинхронно  "geocoder.geocode" , то нам нужно подождать когда ана закончит получать результат
	пока  статус[0]="IN PROGRESS" Цикл
		Пауза();
	КонецЦикла;

...Показать Скрыть
3. Павел Айвазов (hudojnic) 04.09.13 10:18
Автору огромное спасибо Давно хотел поразбираться
4. Яков Коган (Yashazz) 04.09.13 19:38
Понятно. Т.е. фактически асинхрон урезан до модально-жёсткой паузы, и пока не будут получены все отбивки-ответы, обработка будет "висеть". Имхо, не лучшее решение, хотя, возможно, таковы заданные условия.
5. Александр Перевислый (sashapere) 05.09.13 10:03
(4) Yashazz, Оно так и задумывалось, чтобы выйти только когда получен результат. В любом случае можно поставить ограничение на количество пауз, чтобы на случай зависания выйти из цикла.
6. Яков Коган (Yashazz) 08.12.13 13:32
Хорошая штуковина, и отдельное спасибо за примеры, которые приведены в js-исходнике, и за полезные ссылки.

Кстати, приятно было видеть, что используется мой подход к работе - тексты функций в js, единожды загружаемом, и их вызовы из 1С через ParentWindow (хоть в синтакс-помощнике есть грозная рекомендация не юзать это свойство :)). Ну и работа с COM-объектом 1С изнутри js, тоже да.
7. set5553 KUKA (set5553) 21.05.15 10:24
Не подскажете как реализовали цифры внутри маркеров?
8. Александр Перевислый (sashapere) 02.06.15 15:25
(7) set5553, точно уже не помню,но можно попробовать передавать дополнительный параметр, и в JavaScript при создании маркера использовать текст из параметра
9. Андрей Андрей (dronrevx) 02.03.16 12:38
У меня почему то выскакивает часто ошибка сценария, не подскажете в чем может быть причина?
10. Андрей Андрей (dronrevx) 02.03.16 12:41
Забыл файл прикрепить
Прикрепленные файлы:
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа