@@ -104,6 +104,22 @@ module.exports = function convert(gd, calcTrace) {
104104 'icon-size' : trace . marker . size / 10
105105 } ) ;
106106
107+ if ( 'angle' in trace . marker ) {
108+ Lib . extendFlat ( symbol . layout , {
109+ 'icon-rotation-alignment' : 'map' ,
110+ 'icon-rotate' : {
111+ type : 'identity' , property : 'angle'
112+ // unfortunately cant use {angle} do to this issue:
113+ // https://github.com/mapbox/mapbox-gl-js/issues/873
114+ } } )
115+ }
116+
117+ if ( 'allowoverlap' in trace . marker ) {
118+ Lib . extendFlat ( symbol . layout ,
119+ { 'icon-allow-overlap' : trace . marker . allowoverlap } )
120+ }
121+
122+
107123 Lib . extendFlat ( symbol . paint , {
108124 'icon-opacity' : trace . opacity * trace . marker . opacity ,
109125
@@ -239,15 +255,21 @@ function makeSymbolGeoJSON(calcTrace, gd) {
239255
240256 var marker = trace . marker || { } ;
241257 var symbol = marker . symbol ;
258+ var angle = marker . angle ;
242259
243260 var fillSymbol = ( symbol !== 'circle' ) ?
244261 getFillFunc ( symbol ) :
245262 blankFillFunc ;
246263
264+ var fillAngle = ( angle ) ?
265+ getFillFunc ( angle ) :
266+ blankFillFunc ;
267+
247268 var fillText = subTypes . hasText ( trace ) ?
248269 getFillFunc ( trace . text ) :
249270 blankFillFunc ;
250271
272+
251273 var features = [ ] ;
252274
253275 for ( var i = 0 ; i < calcTrace . length ; i ++ ) {
@@ -266,7 +288,7 @@ function makeSymbolGeoJSON(calcTrace, gd) {
266288 var meta = trace . _meta || { } ;
267289 text = Lib . texttemplateString ( tt , labels , fullLayout . _d3locale , pointValues , calcPt , meta ) ;
268290 } else {
269- text = fillText ( calcPt . tx ) ;
291+ text = fillText ( i ) ;
270292 }
271293
272294 if ( text ) {
@@ -280,7 +302,8 @@ function makeSymbolGeoJSON(calcTrace, gd) {
280302 coordinates : calcPt . lonlat
281303 } ,
282304 properties : {
283- symbol : fillSymbol ( calcPt . mx ) ,
305+ symbol : fillSymbol ( i ) ,
306+ angle : fillAngle ( i ) ,
284307 text : text
285308 }
286309 } ) ;
@@ -294,9 +317,9 @@ function makeSymbolGeoJSON(calcTrace, gd) {
294317
295318function getFillFunc ( attr ) {
296319 if ( Lib . isArrayOrTypedArray ( attr ) ) {
297- return function ( v ) { return v ; } ;
320+ return function ( i ) { return attr [ i ] ; } ;
298321 } else if ( attr ) {
299- return function ( ) { return attr ; } ;
322+ return function ( i ) { return attr ; } ;
300323 } else {
301324 return blankFillFunc ;
302325 }
0 commit comments