На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Вопрос

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebServer
Страницы: 1 2 След.
RSS
Вопрос, Показать и выделить объект слоя на карте
 
Подскажите, как реализовано в giswebserver, чтобы показать и выделить объект на карте ?
Например, в панели объектов слоя, при клике переходит и показует объект с его выделением по периметру на карте.
Пример
 
Добрый день!
При клике в карте выполняется запрос объектов getFeatureInfo к сервису. Ответ сервиса содержит данные объектов - семантику и геометрию (метрику).
Полученные сведения об объектах (имя, семантика и другое) выводятся в панели объектов, при клике на запись об объекте создается изображение при помощи
SVG-графики по координатам геометрии (метрики).
 
А какие функции/методы в гис-сервере есть для отрисовки и перехода к объекту? Хочу реализовать следующее – при клике на кнопку, переход к объекту с его выделением по периметру на карте
Изменено: Валерий Стасюк - 07.08.2017 13:08:42
 
В Toolkit в файле source\ui\objectpanelcontrol.js функция onSelectObject можно посмотреть реализацию.

Или примерный код:

function drawObject(gmlid, map, centering) {

   var gid = gmlid,       // gml id объекта, объект должен находиться в map.selectedObjects (после запроса заполняется)
          map = map;

   var mapObject = this.map.selectedObjects.findobjectsByGid(gid);        // получить доступ к объекту карты по идентификатору объекта

   if (!mapObject) { return; }

   map.placemarkRemove();                                                                      // удалить отметки

   if (centering && mapObject.objectcenter) {                                            // если указано, центрировать карту по объекту
        map.selectedObjects.viewSelectedObject(mapObject);
   }

   map.selectedObjects.drawSelectedObjects(true, mapObject);             // выделить (нарисовать)

   return;
}                                            
 
Спасибо!  
 
Цитата
Ольга Нефедьева написал:
В Toolkit в файле source\ui\objectpanelcontrol.js функция onSelectObject можно посмотреть реализацию.

Или примерный код:

function drawObject(gmlid, map, centering) {

   var gid = gmlid,       // gml id объекта, объект должен находиться в map.selectedObjects (после запроса заполняется)
          map = map;

   var mapObject = this.map.selectedObjects.findobjectsByGid(gid);        // получить доступ к объекту карты по идентификатору объекта

   if (!mapObject) { return; }

   map.placemarkRemove();                                                                      // удалить отметки

   if (centering && mapObject.objectcenter) {                                            // если указано, центрировать карту по объекту
        map.selectedObjects.viewSelectedObject(mapObject);
   }

   map.selectedObjects.drawSelectedObjects(true, mapObject);             // выделить (нарисовать)

   return;
}                                            
С помощью каких методов добавить в map.selectedObjects информацию об объекте, т.к. функция onSelectObject работает с уже добавненной информацией ? Она заполняется при клике на объект карты скрин. Может есть альтернативные методы решения данной задачи (показать и выделить объект на карте, при клике на кнопку?)
Изменено: Валерий Стасюк - 09.08.2017 16:35:35
 
Добрый день! У Вас есть лицензионный GIS WebToolKit SE?
Я ранее описывала механизм получения информации об объекте через запрос getFeatureInfo.
Если Вам известен идентификатор объекта, можно при клике по кнопке отправлять запрос getFeature или getFeatureById.
Параметры запросов описаны в документации по GIS WebService SE, руководство системного программиста. Получить данные и нарисовать.
 
 
Имеется код
function drawObj(bbox,geom,id,perimeter,area,code,name,objName){
           var drawing = new GWTK.svgDrawing(GWTK.maphandlers.map, "NewPanel", null, "newSvgId", null);
           var json= {"type":"FeatureCollection",
               "properties": {"numberMatched":1, "numberReturned":1},
               "RequestId":"1",
               "bbox": bbox,
               "features": [
                   {"type":"Feature",
                   "geometry": {"type":"Polygon",
                   "coordinates": [geom] },
                   "properties":{
                   "id":id,
                   "schema":"bsd",
                   "perimeter": perimeter,
                   "area": area,
                   "code":code,
                   "name":name,
                   "ObjName":objName} }]
           };
       var options = {
           strokeWidth: "2px",
           vectorEffect: "non-scaling-stroke",
           strokeColor: "black",
           fill: true,
           fillColor: "red",
           fillOpacity: "0.75",
           background: "",
           backgroundsize: "auto auto"
       };
       console.log(json);
       drawing.draw(json, true, options);
   }
Не рисуется объект. Лицензии нет. Геометрия – массив  ~25000 элементов.
GiswebServer, ответ сервиса
Изменено: Валерий Стасюк - 11.08.2017 00:09:38
 
Цитата
Валерий Стасюк написал:
Лицензии нет. Г
Не совсем так. У Вас есть лицензия на GIS WebServer SE и GIS WebService SE 8) .
 
Цитата
Валерий Стасюк написал:
...
Геометрия – массив  ~25000 элементов.
GiswebServer ,  ответ сервиса
Добрый день!
Исходя из прикрепленных изображений, у Вас в JSON последовательность координат точек [lat, lon].
В стандартном GeoJSON последовательность [lon, lat].
С текущими координатами Ваши объекты должны были появиться где-то в районе Антарктиды.
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности