Search code examples
angularjsopenlayersopenlayers-3angular-openlayers

Static image rotation in OpenLayers3 and AngularJS


I am using angular-openlayers-directive for creating custom map. Tried to modify this example , used static image instead of maps in custom layers. Bug it goes to error.

I am looking for solution of rotation of custom image as map. Can you please help on this.


Solution

  • Without seeing your code or knowing the error message is it is hard to say specifically what the problem is, but here's the example modified to rotate a static image:

    <!DOCTYPE html>
    <html ng-app="demoapp">
    
    <head>
      <script src="https://tombatossals.github.io/angular-openlayers-directive/bower_components/openlayers3/build/ol.js"></script>
      <script src="https://tombatossals.github.io/angular-openlayers-directive/bower_components/angular/angular.js"></script>
      <script src="https://tombatossals.github.io/angular-openlayers-directive/bower_components/angular-sanitize/angular-sanitize.js"></script>
      <script src="https://tombatossals.github.io/angular-openlayers-directive/dist/angular-openlayers-directive.js"></script>
      <link rel="stylesheet" href="https://tombatossals.github.io/angular-openlayers-directive/bower_components/openlayers3/build/ol.css" />
      <script>
        var app = angular.module('demoapp', ['openlayers-directive']);
        app.controller('DemoController', ['$scope', '$http', 'olData', function($scope, $http, olData) {
    
          angular.extend($scope, {
            degrees: 0,
            center: {
              coord: [900, 600],
              zoom: 3
            },
            defaults: {
              view: {
                projection: 'pixel',
                extent: [0, 0, 1800, 1200],
                rotation: 0
              }
            },
            static: {
              source: {
                type: "ImageStatic",
                url: "http://blog.wallpops.com/wp-content/upLoads/2013/05/WPE0624.jpg",
                imageSize: [1800, 1200]
              }
            },
            view: {
              extent: [0, 0, 1800, 1200],
              rotation: 0
            }
    
          });
    
          $scope.degreesToRadians = function() {
            $scope.view.rotation = parseFloat($scope.degrees, 10).toFixed(2) * (Math.PI / 180);
          };
    
          $scope.$watch('view.rotation', function(value) {
            $scope.degrees = ($scope.view.rotation * 180 / Math.PI).toFixed(2);
          });
        }]);
      </script>
    </head>
    
    <body ng-controller="DemoController">
      <openlayers ol-center="center" ol-defaults="defaults" ol-view="view" custom-layers="true" height="400px">
        <ol-layer ol-layer-properties="static"></ol-layer>
      </openlayers>
      <h1>View rotation example</h1>
      <p>You can interact with the view rotation of your map.</p>
    
      <p>
        <input type="range" min="-180" max="180" ng-change="degreesToRadians()" ng-model="degrees" /> Degrees: {{ degrees }}</p>
      <pre ng-bind="view | json"></pre>
    </body>
    
    </html>

    And the same example in Plunker: http://plnkr.co/edit/zw7QUyFfWXqnNE9rkdjZ?p=preview