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

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

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

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

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

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

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

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

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

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

 

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

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

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

См. также

Комментарии
1. Яков Коган (Yashazz) 2036 02.09.13 13:31 Сейчас в теме
Если не секрет, как ловили асинхронный ответ метода геокодирования? Опросом через ОбработкаОжидания?
2. Александр Перевислый (sashapere) 142 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) 2036 04.09.13 19:38 Сейчас в теме
Понятно. Т.е. фактически асинхрон урезан до модально-жёсткой паузы, и пока не будут получены все отбивки-ответы, обработка будет "висеть". Имхо, не лучшее решение, хотя, возможно, таковы заданные условия.
5. Александр Перевислый (sashapere) 142 05.09.13 10:03 Сейчас в теме
(4) Yashazz, Оно так и задумывалось, чтобы выйти только когда получен результат. В любом случае можно поставить ограничение на количество пауз, чтобы на случай зависания выйти из цикла.
6. Яков Коган (Yashazz) 2036 08.12.13 13:32 Сейчас в теме
Хорошая штуковина, и отдельное спасибо за примеры, которые приведены в js-исходнике, и за полезные ссылки.

Кстати, приятно было видеть, что используется мой подход к работе - тексты функций в js, единожды загружаемом, и их вызовы из 1С через ParentWindow (хоть в синтакс-помощнике есть грозная рекомендация не юзать это свойство :)). Ну и работа с COM-объектом 1С изнутри js, тоже да.
7. set5553 KUKA (set5553) 21.05.15 10:24 Сейчас в теме
Не подскажете как реализовали цифры внутри маркеров?
8. Александр Перевислый (sashapere) 142 02.06.15 15:25 Сейчас в теме
(7) set5553, точно уже не помню,но можно попробовать передавать дополнительный параметр, и в JavaScript при создании маркера использовать текст из параметра
9. Андрей Андрей (dronrevx) 35 02.03.16 12:38 Сейчас в теме
У меня почему то выскакивает часто ошибка сценария, не подскажете в чем может быть причина?
deutsch2008; +1 Ответить 2
10. Андрей Андрей (dronrevx) 35 02.03.16 12:41 Сейчас в теме
Забыл файл прикрепить
Прикрепленные файлы:
deutsch2008; +1 Ответить 1
11. Николай Зимин (deutsch2008) 112 20.02.17 18:32 Сейчас в теме
12. Николай Зимин (deutsch2008) 112 21.02.17 16:57 Сейчас в теме
(10) Решил я эту проблему :-)
В макете HTML_код добавил такие строки:

<META http-equiv="Content-Type" content="text/html; charset=utf-8" />
<META http-equiv="X-UA-Compatible" content="IE=8" />

src="https://maps.google.com/maps/api/js?v=3.9&sensor=true">

А эти строки удалил!!!!

<meta name="" content="initial-scale=1.0, user-scalable=yes" />
src="https://maps.google.com/maps/api/js?sensor=true">

т. е. сделал замену. И все :-)

13. Николай Зимин (deutsch2008) 112 21.02.17 17:30 Сейчас в теме
(9) Какой у тебя стоит Internet Explorer версии?
14. Николай Зимин (deutsch2008) 112 15.03.17 15:15 Сейчас в теме
А сейчас столкнулся с другой проблемой! При открытии обработки пишет:
Oops! Something went wrong. This page didn't load Google Maps correctly. See the JavaScript console for technical details.
Прикрепленные файлы:
Оставьте свое сообщение