2016-11-17 4 views
1

Ich benutze Openlayers Richtlinien für mein Projekt. Ich konnte eine Geometrie auf der Karte zeichnen, jetzt möchte ich sie vergrößern.eckig - openLayers: Zoom auf Geometrie

Ich sah dies example und es ist genau das, was ich tun möchte (das beste Teil passt). Aber ich weiß nicht, wie man es mit der Winkelrichtlinie macht.

hier ist meine Schicht in meinem Component-Controller:

  _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)' 
       }) 
      }) 
     }; 

und wie verwende ich es aus meiner Sicht:

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

können Sie mir helfen?

thx viel!

Antwort

1

Ok ich habe eine Lösung gefunden, ich gebe sie hier ab, vielleicht kann sie helfen!

Ziel ist es, Ihre Ebenen von der Karte zu bekommen, dann analysieren Sie die Daten, bis Sie die Geometrie bekommen können.

hier ist die Funktion, die ich habe (ein bisschen roh, aber es funktioniert)

 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()); 
       } 
      }); 
     }); 
    }