Skip to content

Commit 1bdff8b

Browse files
committed
v1.10.0
2 parents cb4c13b + 6624f62 commit 1bdff8b

7 files changed

+100
-37
lines changed

dist/angular-openlayers-directive.js

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,14 @@ angular.module('openlayers-directive').directive('olCenter', ["$log", "$location
261261

262262
var viewCenter = view.getCenter();
263263
if (viewCenter) {
264-
if (defaults.view.projection === 'pixel') {
264+
if (defaults.view.projection === 'pixel' || center.projection === 'pixel') {
265265
view.setCenter(center.coord);
266-
return;
267-
}
268-
var actualCenter = ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
269-
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
270-
setCenter(view, defaults.view.projection, center, map);
266+
} else {
267+
var actualCenter =
268+
ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
269+
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
270+
setCenter(view, defaults.view.projection, center, map);
271+
}
271272
}
272273
}
273274

@@ -286,7 +287,7 @@ angular.module('openlayers-directive').directive('olCenter', ["$log", "$location
286287
var center = map.getView().getCenter();
287288
scope.center.zoom = view.getZoom();
288289

289-
if (defaults.view.projection === 'pixel') {
290+
if (defaults.view.projection === 'pixel' || scope.center.projection === 'pixel') {
290291
scope.center.coord = center;
291292
return;
292293
}
@@ -1377,6 +1378,7 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
13771378

13781379
var createSource = function(source, projection) {
13791380
var oSource;
1381+
var url;
13801382
var geojsonFormat = new ol.format.GeoJSON(); // used in various switch stmnts below
13811383

13821384
switch (source.type) {
@@ -1385,7 +1387,7 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
13851387
$log.error('[AngularJS - Openlayers] - MapBox layer requires the map id and the access token');
13861388
return;
13871389
}
1388-
var url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
1390+
url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
13891391
source.accessToken;
13901392

13911393
var pixelRatio = window.devicePixelRatio;
@@ -1400,6 +1402,22 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14001402
tilePixelRatio: pixelRatio > 1 ? 2 : 1
14011403
});
14021404
break;
1405+
case 'MapBoxStudio':
1406+
if (!source.mapId || !source.accessToken || !source.userId) {
1407+
$log.error('[AngularJS - Openlayers] - MapBox Studio layer requires the map id' +
1408+
', user id and the access token');
1409+
return;
1410+
}
1411+
url = 'https://api.mapbox.com/styles/v1/' + source.userId +
1412+
'/' + source.mapId + '/tiles/{z}/{x}/{y}?access_token=' +
1413+
source.accessToken;
1414+
1415+
oSource = new ol.source.XYZ({
1416+
url: url,
1417+
attributions: createAttribution(source),
1418+
tileSize: source.tileSize || [512, 512]
1419+
});
1420+
break;
14031421
case 'ImageWMS':
14041422
if (!source.url || !source.params) {
14051423
$log.error('[AngularJS - Openlayers] - ImageWMS Layer needs ' +
@@ -1548,14 +1566,17 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15481566
oSource = new ol.source.Vector();
15491567

15501568
var projectionToUse = projection;
1569+
var dataProjection; // Projection of geojson data
15511570
if (isDefined(source.geojson.projection)) {
1552-
projectionToUse = source.geojson.projection;
1571+
dataProjection = new ol.proj.get(source.geojson.projection);
1572+
} else {
1573+
dataProjection = projection; // If not defined, features will not be reprojected.
15531574
}
15541575

15551576
var features = geojsonFormat.readFeatures(
15561577
source.geojson.object, {
15571578
featureProjection: projectionToUse,
1558-
dataProjection: projectionToUse
1579+
dataProjection: dataProjection
15591580
});
15601581

15611582
oSource.addFeatures(features);

dist/angular-openlayers-directive.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-openlayers-directive.min.no-header.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-openlayers-directive.pre.js

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,14 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc
261261

262262
var viewCenter = view.getCenter();
263263
if (viewCenter) {
264-
if (defaults.view.projection === 'pixel') {
264+
if (defaults.view.projection === 'pixel' || center.projection === 'pixel') {
265265
view.setCenter(center.coord);
266-
return;
267-
}
268-
var actualCenter = ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
269-
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
270-
setCenter(view, defaults.view.projection, center, map);
266+
} else {
267+
var actualCenter =
268+
ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
269+
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
270+
setCenter(view, defaults.view.projection, center, map);
271+
}
271272
}
272273
}
273274

@@ -286,7 +287,7 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc
286287
var center = map.getView().getCenter();
287288
scope.center.zoom = view.getZoom();
288289

289-
if (defaults.view.projection === 'pixel') {
290+
if (defaults.view.projection === 'pixel' || scope.center.projection === 'pixel') {
290291
scope.center.coord = center;
291292
return;
292293
}
@@ -1377,6 +1378,7 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
13771378

13781379
var createSource = function(source, projection) {
13791380
var oSource;
1381+
var url;
13801382
var geojsonFormat = new ol.format.GeoJSON(); // used in various switch stmnts below
13811383

13821384
switch (source.type) {
@@ -1385,7 +1387,7 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
13851387
$log.error('[AngularJS - Openlayers] - MapBox layer requires the map id and the access token');
13861388
return;
13871389
}
1388-
var url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
1390+
url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
13891391
source.accessToken;
13901392

13911393
var pixelRatio = window.devicePixelRatio;
@@ -1400,6 +1402,22 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
14001402
tilePixelRatio: pixelRatio > 1 ? 2 : 1
14011403
});
14021404
break;
1405+
case 'MapBoxStudio':
1406+
if (!source.mapId || !source.accessToken || !source.userId) {
1407+
$log.error('[AngularJS - Openlayers] - MapBox Studio layer requires the map id' +
1408+
', user id and the access token');
1409+
return;
1410+
}
1411+
url = 'https://api.mapbox.com/styles/v1/' + source.userId +
1412+
'/' + source.mapId + '/tiles/{z}/{x}/{y}?access_token=' +
1413+
source.accessToken;
1414+
1415+
oSource = new ol.source.XYZ({
1416+
url: url,
1417+
attributions: createAttribution(source),
1418+
tileSize: source.tileSize || [512, 512]
1419+
});
1420+
break;
14031421
case 'ImageWMS':
14041422
if (!source.url || !source.params) {
14051423
$log.error('[AngularJS - Openlayers] - ImageWMS Layer needs ' +
@@ -1548,14 +1566,17 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
15481566
oSource = new ol.source.Vector();
15491567

15501568
var projectionToUse = projection;
1569+
var dataProjection; // Projection of geojson data
15511570
if (isDefined(source.geojson.projection)) {
1552-
projectionToUse = source.geojson.projection;
1571+
dataProjection = new ol.proj.get(source.geojson.projection);
1572+
} else {
1573+
dataProjection = projection; // If not defined, features will not be reprojected.
15531574
}
15541575

15551576
var features = geojsonFormat.readFeatures(
15561577
source.geojson.object, {
15571578
featureProjection: projectionToUse,
1558-
dataProjection: projectionToUse
1579+
dataProjection: dataProjection
15591580
});
15601581

15611582
oSource.addFeatures(features);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,5 @@
6565
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
6666
},
6767
"main": "dist/angular-openlayers-directive",
68-
"version": "1.9.2"
68+
"version": "1.10.0"
6969
}

src/directives/center.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,14 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc
128128

129129
var viewCenter = view.getCenter();
130130
if (viewCenter) {
131-
if (defaults.view.projection === 'pixel') {
131+
if (defaults.view.projection === 'pixel' || center.projection === 'pixel') {
132132
view.setCenter(center.coord);
133-
return;
134-
}
135-
var actualCenter = ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
136-
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
137-
setCenter(view, defaults.view.projection, center, map);
133+
} else {
134+
var actualCenter =
135+
ol.proj.transform(viewCenter, defaults.view.projection, center.projection);
136+
if (!(actualCenter[1] === center.lat && actualCenter[0] === center.lon)) {
137+
setCenter(view, defaults.view.projection, center, map);
138+
}
138139
}
139140
}
140141

@@ -153,7 +154,7 @@ angular.module('openlayers-directive').directive('olCenter', function($log, $loc
153154
var center = map.getView().getCenter();
154155
scope.center.zoom = view.getZoom();
155156

156-
if (defaults.view.projection === 'pixel') {
157+
if (defaults.view.projection === 'pixel' || scope.center.projection === 'pixel') {
157158
scope.center.coord = center;
158159
return;
159160
}

src/services/olHelpers.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
189189

190190
var createSource = function(source, projection) {
191191
var oSource;
192+
var url;
192193
var geojsonFormat = new ol.format.GeoJSON(); // used in various switch stmnts below
193194

194195
switch (source.type) {
@@ -197,7 +198,7 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
197198
$log.error('[AngularJS - Openlayers] - MapBox layer requires the map id and the access token');
198199
return;
199200
}
200-
var url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
201+
url = 'http://api.tiles.mapbox.com/v4/' + source.mapId + '/{z}/{x}/{y}.png?access_token=' +
201202
source.accessToken;
202203

203204
var pixelRatio = window.devicePixelRatio;
@@ -212,6 +213,22 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
212213
tilePixelRatio: pixelRatio > 1 ? 2 : 1
213214
});
214215
break;
216+
case 'MapBoxStudio':
217+
if (!source.mapId || !source.accessToken || !source.userId) {
218+
$log.error('[AngularJS - Openlayers] - MapBox Studio layer requires the map id' +
219+
', user id and the access token');
220+
return;
221+
}
222+
url = 'https://api.mapbox.com/styles/v1/' + source.userId +
223+
'/' + source.mapId + '/tiles/{z}/{x}/{y}?access_token=' +
224+
source.accessToken;
225+
226+
oSource = new ol.source.XYZ({
227+
url: url,
228+
attributions: createAttribution(source),
229+
tileSize: source.tileSize || [512, 512]
230+
});
231+
break;
215232
case 'ImageWMS':
216233
if (!source.url || !source.params) {
217234
$log.error('[AngularJS - Openlayers] - ImageWMS Layer needs ' +
@@ -360,14 +377,17 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
360377
oSource = new ol.source.Vector();
361378

362379
var projectionToUse = projection;
380+
var dataProjection; // Projection of geojson data
363381
if (isDefined(source.geojson.projection)) {
364-
projectionToUse = source.geojson.projection;
382+
dataProjection = new ol.proj.get(source.geojson.projection);
383+
} else {
384+
dataProjection = projection; // If not defined, features will not be reprojected.
365385
}
366386

367387
var features = geojsonFormat.readFeatures(
368388
source.geojson.object, {
369389
featureProjection: projectionToUse,
370-
dataProjection: projectionToUse
390+
dataProjection: dataProjection
371391
});
372392

373393
oSource.addFeatures(features);

0 commit comments

Comments
 (0)