вторник, 20 декабря 2011 г.

1Cv8 и Google Maps

Leave a Comment
 #НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   СсылкаНаБазу = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
   APIГугла = Константы.КлючКарта.Получить();
 
   ТаблицаОбъектовДляВывода = Новый ТаблицаЗначений;
   ТаблицаОбъектовДляВывода.Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка"));
   ТаблицаОбъектовДляВывода.Колонки.Добавить("Город",Новый ОписаниеТипов("Строка"));
   ТаблицаОбъектовДляВывода.Колонки.Добавить("Адрес",Новый ОписаниеТипов("Строка"));
   ТаблицаОбъектовДляВывода.Колонки.Добавить("Широта",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,6)));
   ТаблицаОбъектовДляВывода.Колонки.Добавить("Долгота",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,6)));
   Если Параметры.ОтображатьСОтветственными Тогда
      ТаблицаОбъектовДляВывода.Колонки.Добавить("Ответственный",Новый ОписаниеТипов("Строка"));
   КонецЕсли;
 
   Для Каждого ТекЭлемент Из Параметры.ОбъектыДляОтображения Цикл
      КоординатыОбъекта = ОбщийМодульКартаСервер.ПолучитьКоординатыОбъекта(ТекЭлемент.Значение.ОбъектПосещения);
      Если КоординатыОбъекта = Неопределено Тогда
         Продолжить;
      Иначе
         НоваяСтрока = ТаблицаОбъектовДляВывода.Добавить();
         НоваяСтрока.Наименование = ТекЭлемент.Значение.ОбъектПосещения.Наименование;
         НоваяСтрока.Город = ТекЭлемент.Значение.ОбъектПосещения.Город.Наименование;
         НоваяСтрока.Адрес = ТекЭлемент.Значение.ОбъектПосещения.Адрес;
         НоваяСтрока.Широта = КоординатыОбъекта[0];
         НоваяСтрока.Долгота = КоординатыОбъекта[1];
         Если Параметры.ОтображатьСОтветственными Тогда
            НоваяСтрока.Ответственный = ТекЭлемент.Значение.Ответственный.Наименование;
         КонецЕсли;
      КонецЕсли;
   КонецЦикла;
 
   ТекстСкрипта = "data.addRows(" + Строка(ТаблицаОбъектовДляВывода.Количество()) + ");";
   Сч = 0;
   Для Каждого ТекСтрока Из ТаблицаОбъектовДляВывода Цикл
      ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 0, " +СтрЗаменить(Строка(ТекСтрока.Широта),",",".") + ");";
      ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 1, " +СтрЗаменить(Строка(ТекСтрока.Долгота),",",".") + ");";
      ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 2, '" +Строка(ТекСтрока.Наименование) + " "
      + Строка(ТекСтрока.Город) + " " + Строка(ТекСтрока.Адрес) + " " + ?(Параметры.ОтображатьСОтветственными, ".Ответственный: " + Строка(ТекСтрока.Ответственный), "") + " " + "');";
      Сч = Сч + 1;
   КонецЦикла;
СтраницаХТМЛ = "<html>
|  <head>
|    <script src=""http://maps.google.com/maps?file=api&v=2&key=" + APIГугла + """ type=""text/javascript""></script>
|    <script type=""text/javascript"" src=""http://www.google.com/jsapi""></script>
|  </head>
|
|  <body>
|    <div id=""map_div"" style=""width: 800px; height: 550px""></div>
|    <script type=""text/javascript"">
|
|      google.load(""visualization"", ""1"", {packages:[""map""]});
|      google.setOnLoadCallback(drawMap);
|      function checkIfGoogleLoad() {
|        if(!google.visualization) setTimeout(checkIfGoogleLoad, 1000);
| else drawMap();
|      }
|      function drawMap() {
|        var data = new google.visualization.DataTable();
|        data.addColumn('number', 'Lat');
|        data.addColumn('number', 'Lon');
|        data.addColumn('string', 'Name');" + ТекстСкрипта + "
|        var map = new google.visualization.Map(document.getElementById('map_div'));
|        map.draw(data, {showTip: true, mapType: 'normal'});
|      }
|      checkIfGoogleLoad();
|    </script>
|  </body>
|</html>"; 
КонецПроцедуры   

0 коммент.:

Отправить комментарий