2017-05-09 8 views
0

개발중인 프로젝트에서 ol.interaction.Draw 기능을 사용하여 형상을 그립니다. Geometry (선 스트링 또는 다각형)에 GPS 점을 추가하기 위해 g 용하는 geometryFunction. 이것은이 GPS 지점을 추가하기 위해 부울을 설정하여 수행됩니다. 이 부울은 일부 HTML에 있던 버튼으로 설정됩니다.ol3 geometryFunction interaction.Draw GPS 지점 추가

Al은 잘 작동하지만지도를 다시 커서 위로 움직일 때까지 스케치가 업데이트되지 않습니다. 커서를지도 위로 이동하지 않고 geometryFunction을 트리거하는 방법이 있습니까?

// Interaction 
     $scope.interactions.draw = new ol.interaction.Draw({ 
      source: $scope.vector.getSource(), 
      type: (function() { 
       var type = 'Point'; 
       if ($scope.layer.TypeName == 'LineStyle') 
        type = 'LineString'; 
       if ($scope.layer.TypeName == 'PolygonStyle') 
        type = 'Polygon'; 
       return type; 
      })(), 
      geometryFunction: function (coordinates, geometry) { 

       if (!_.isUndefined(geometry)) { 
        // Is move to GPS position selected? 
        if ($scope.moveToGpsPosition_) { 
         // GPS position 
         var pos = _geolocation.geolocation.getPosition(); 
         // Line 
         if ($scope.layer.TypeName == 'LineStyle') 
          coordinates.splice(coordinates.length - 1, 0, pos); 
         // Polygon 
         if ($scope.layer.TypeName == 'PolygonStyle') 
          coordinates[0].splice(coordinates.length - 2, 0, pos); 
         // Stop move to GPS position 
         $scope.moveToGpsPosition_ = false; 
        } 
        geometry.setCoordinates(coordinates); 
       } else { 

        // Detect geometry type 
        if ($scope.layer.TypeName == 'PointStyle') 
         geometry = new ol.geom.Point(coordinates); 
        if ($scope.layer.TypeName == 'LineStyle') 
         geometry = new ol.geom.LineString(coordinates); 
        if ($scope.layer.TypeName == 'PolygonStyle') 
         geometry = new ol.geom.Polygon(coordinates); 
       } 
       return geometry; 
      } 
     }); 

답변

0

나는 문제를 복제 어려운 시간을 보내고있어하지만 난 당신이하여 해결할 수 있습니다 생각하여 geometry.setCoordinates(coordinates); 줄 끝에서 다음 중 하나를 추가 :

map.updateSize(); 또는 map.render();