2016-11-17 5 views
1

Я использую директивы Openlayers для своего проекта. Мне удалось нарисовать геометрию на карте, теперь я бы хотел увеличить ее.угловой - openLayers: увеличение по геометрии

Я видел это example, и это именно то, что я хочу сделать (самая подходящая часть). Но я не знаю, как это сделать с помощью Angular Directive.

вот мой слой в моем компоненте контроллера:

  _this.perimeterLayer = { 
      source: { 
       type: 'GeoJSON', 
       geojson: { 
        object: { 
         type: 'Feature', 
         geometry: { 
          type: 'Polygon', 
          coordinates: transformedCoords 
         } 
        } 
       } 

      }, 
      style: new ol.style.Style({ 
       stroke: new ol.style.Stroke({ 
        color: 'blue', 
        width: 3 
       }), 
       fill: new ol.style.Fill({ 
        color: 'rgba(0, 0, 255, 0.1)' 
       }) 
      }) 
     }; 

и как я использую его на мой взгляд:

<ol-layer ol-layer-properties="$ctrl.perimeterLayer"></ol-layer> 

вы можете мне помочь?

thx много!

ответ

1

Хорошо, я нашел решение, я его брошу здесь, может быть, он может помочь!

Цель состоит в том, чтобы получить слои с карты, а затем проанализировать данные, пока вы не сможете получить геометрию.

вот функция, которую я сделал (немного сырой, но он работает)

 function perimeterFocus() { 
     var geometry; 
     olData.getMap().then(function (map) { 
      map.getLayers().forEach(function (lyr) { 
       if (lyr.get('name') == 'perimterLayer') { 
        var features = lyr.getSource().getFeatures(); 
        geometry = features[0].getGeometry(); 
        map.getView().fit(geometry, map.getSize()); 
       } 
      }); 
     }); 
    }