@@ -1375,6 +1375,7 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
13751375 case 'WKT' :
13761376 return 'Vector' ;
13771377 case 'TileVector' :
1378+ case 'MVT' :
13781379 return 'TileVector' ;
13791380 default :
13801381 return 'Tile' ;
@@ -1412,6 +1413,7 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14121413
14131414 var createSource = function ( source , projection ) {
14141415 var oSource ;
1416+ var pixelRatio ;
14151417 var url ;
14161418 var geojsonFormat = new ol . format . GeoJSON ( ) ; // used in various switch stmnts below
14171419
@@ -1424,7 +1426,7 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14241426 url = 'http://api.tiles.mapbox.com/v4/' + source . mapId + '/{z}/{x}/{y}.png?access_token=' +
14251427 source . accessToken ;
14261428
1427- var pixelRatio = window . devicePixelRatio ;
1429+ pixelRatio = window . devicePixelRatio ;
14281430
14291431 if ( pixelRatio > 1 ) {
14301432 url = url . replace ( '.png' , '@2x.png' ) ;
@@ -1434,7 +1436,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14341436 url : url ,
14351437 tileLoadFunction : source . tileLoadFunction ,
14361438 attributions : createAttribution ( source ) ,
1437- tilePixelRatio : pixelRatio > 1 ? 2 : 1
1439+ tilePixelRatio : pixelRatio > 1 ? 2 : 1 ,
1440+ wrapX : source . wrapX !== undefined ? source . wrapX : true
14381441 } ) ;
14391442 break ;
14401443 case 'MapBoxStudio' :
@@ -1447,11 +1450,32 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14471450 '/' + source . mapId + '/tiles/{z}/{x}/{y}?access_token=' +
14481451 source . accessToken ;
14491452
1453+ pixelRatio = window . devicePixelRatio ;
1454+
1455+ if ( pixelRatio > 1 ) {
1456+ url = url . replace ( '{y}?access_token' , '{y}@2x?access_token' ) ;
1457+ }
1458+
14501459 oSource = new ol . source . XYZ ( {
14511460 url : url ,
14521461 tileLoadFunction : source . tileLoadFunction ,
14531462 attributions : createAttribution ( source ) ,
1454- tileSize : source . tileSize || [ 512 , 512 ]
1463+ tilePixelRatio : pixelRatio > 1 ? 2 : 1 ,
1464+ tileSize : source . tileSize || [ 512 , 512 ] ,
1465+ wrapX : source . wrapX !== undefined ? source . wrapX : true
1466+ } ) ;
1467+ break ;
1468+ case 'MVT' :
1469+ if ( ! source . url ) {
1470+ $log . error ( '[AngularJS - Openlayers] - MVT layer requires the source url' ) ;
1471+ return ;
1472+ }
1473+ oSource = new ol . source . VectorTile ( {
1474+ attributions : source . attributions || '' ,
1475+ format : new ol . format . MVT ( ) ,
1476+ tileGrid : ol . tilegrid . createXYZ ( { maxZoom : source . maxZoom || 22 } ) ,
1477+ tilePixelRatio : source . tilePixelRatio || 16 ,
1478+ url : source . url
14551479 } ) ;
14561480 break ;
14571481 case 'ImageWMS' :
@@ -1479,7 +1503,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
14791503 tileLoadFunction : source . tileLoadFunction ,
14801504 crossOrigin : ( typeof source . crossOrigin === 'undefined' ) ? 'anonymous' : source . crossOrigin ,
14811505 params : deepCopy ( source . params ) ,
1482- attributions : createAttribution ( source )
1506+ attributions : createAttribution ( source ) ,
1507+ wrapX : source . wrapX !== undefined ? source . wrapX : true
14831508 } ;
14841509
14851510 if ( source . serverType ) {
@@ -1517,7 +1542,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15171542 resolutions : source . tileGrid . resolutions ,
15181543 matrixIds : source . tileGrid . matrixIds
15191544 } ) ,
1520- style : ( source . style === 'undefined' ) ? 'normal' : source . style
1545+ style : ( source . style === 'undefined' ) ? 'normal' : source . style ,
1546+ wrapX : source . wrapX !== undefined ? source . wrapX : true
15211547 } ;
15221548
15231549 if ( isDefined ( source . url ) ) {
@@ -1534,7 +1560,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15341560 case 'OSM' :
15351561 oSource = new ol . source . OSM ( {
15361562 tileLoadFunction : source . tileLoadFunction ,
1537- attributions : createAttribution ( source )
1563+ attributions : createAttribution ( source ) ,
1564+ wrapX : source . wrapX !== undefined ? source . wrapX : true
15381565 } ) ;
15391566
15401567 if ( source . url ) {
@@ -1553,7 +1580,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15531580 tileLoadFunction : source . tileLoadFunction ,
15541581 attributions : createAttribution ( source ) ,
15551582 imagerySet : source . imagerySet ? source . imagerySet : bingImagerySets [ 0 ] ,
1556- culture : source . culture
1583+ culture : source . culture ,
1584+ wrapX : source . wrapX !== undefined ? source . wrapX : true
15571585 } ;
15581586
15591587 if ( source . maxZoom ) {
@@ -1571,7 +1599,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15711599
15721600 oSource = new ol . source . MapQuest ( {
15731601 attributions : createAttribution ( source ) ,
1574- layer : source . layer
1602+ layer : source . layer ,
1603+ wrapX : source . wrapX !== undefined ? source . wrapX : true
15751604 } ) ;
15761605
15771606 break ;
@@ -1588,7 +1617,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
15881617 oSource = new ol . source . XYZ ( {
15891618 attributions : createAttribution ( source ) ,
15901619 tileLoadFunction : source . tileLoadFunction ,
1591- url : _url
1620+ url : _url ,
1621+ wrapX : source . wrapX !== undefined ? source . wrapX : true
15921622 } ) ;
15931623
15941624 break ;
@@ -1601,7 +1631,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
16011631 oSource = new ol . source . TileArcGISRest ( {
16021632 attributions : createAttribution ( source ) ,
16031633 tileLoadFunction : source . tileLoadFunction ,
1604- url : source . url
1634+ url : source . url ,
1635+ wrapX : source . wrapX !== undefined ? source . wrapX : true
16051636 } ) ;
16061637
16071638 break ;
@@ -1712,7 +1743,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
17121743 url : source . url ,
17131744 attributions : createAttribution ( source ) ,
17141745 tileLoadFunction : source . tileLoadFunction ,
1715- crossOrigin : 'anonymous'
1746+ crossOrigin : 'anonymous' ,
1747+ wrapX : source . wrapX !== undefined ? source . wrapX : true
17161748 } ) ;
17171749 break ;
17181750
@@ -1728,7 +1760,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
17281760 format : source . format ,
17291761 tileGrid : new ol . tilegrid . createXYZ ( {
17301762 maxZoom : source . maxZoom || 19
1731- } )
1763+ } ) ,
1764+ wrapX : source . wrapX !== undefined ? source . wrapX : true
17321765 } ) ;
17331766 break ;
17341767
@@ -1758,7 +1791,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
17581791 var url = source . url + z + '/' + x + '/' + y + '.png' ;
17591792
17601793 return url ;
1761- }
1794+ } ,
1795+ wrapX : source . wrapX !== undefined ? source . wrapX : true
17621796 } ) ;
17631797 break ;
17641798 case 'TileImage' :
@@ -1779,7 +1813,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
17791813 . replace ( '{x}' , x . toString ( ) )
17801814 . replace ( '{y}' , y . toString ( ) ) ;
17811815 return url ;
1782- }
1816+ } ,
1817+ wrapX : source . wrapX !== undefined ? source . wrapX : true
17831818 } ) ;
17841819 break ;
17851820 case 'KML' :
@@ -1798,7 +1833,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
17981833 }
17991834 oSource = new ol . source . Stamen ( {
18001835 tileLoadFunction : source . tileLoadFunction ,
1801- layer : source . layer
1836+ layer : source . layer ,
1837+ wrapX : source . wrapX !== undefined ? source . wrapX : true
18021838 } ) ;
18031839 break ;
18041840 case 'ImageStatic' :
@@ -1827,7 +1863,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
18271863 maxZoom : source . maxZoom ,
18281864 projection : source . projection ,
18291865 tileUrlFunction : source . tileUrlFunction ,
1830- tileLoadFunction : source . tileLoadFunction
1866+ tileLoadFunction : source . tileLoadFunction ,
1867+ wrapX : source . wrapX !== undefined ? source . wrapX : true
18311868 } ) ;
18321869 break ;
18331870 case 'Zoomify' :
@@ -1836,7 +1873,8 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
18361873 }
18371874 oSource = new ol . source . Zoomify ( {
18381875 url : source . url ,
1839- size : source . imageSize
1876+ size : source . imageSize ,
1877+ wrapX : source . wrapX !== undefined ? source . wrapX : true
18401878 } ) ;
18411879 break ;
18421880 }
@@ -2132,6 +2170,9 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
21322170 if ( isDefinedAndNotNull ( layer . maxResolution ) ) {
21332171 layerConfig . maxResolution = layer . maxResolution ;
21342172 }
2173+ if ( isDefinedAndNotNull ( layer . style ) && type === 'TileVector' ) {
2174+ layerConfig . style = layer . style ;
2175+ }
21352176
21362177 switch ( type ) {
21372178 case 'Image' :
0 commit comments