diff --git a/debug/style-v3.json b/debug/style-v3.json index b4b68b51b05..e9efc515543 100644 --- a/debug/style-v3.json +++ b/debug/style-v3.json @@ -627,8 +627,9 @@ "render": { "type": "symbol", "symbol-placement": "line", - "icon-image": "bicycle-12", - "symbol-min-distance": 150 + "symbol-min-distance": 150, + "icon-image": "triangle-stroked-12", + "icon-rotate": 90 }, "style": {} }] diff --git a/js/render/drawsymbol.js b/js/render/drawsymbol.js index 3e1fe3014e4..08c889a10a3 100644 --- a/js/render/drawsymbol.js +++ b/js/render/drawsymbol.js @@ -23,8 +23,11 @@ function drawSymbol(gl, painter, bucket, layerStyle, posMatrix, params, imageSpr var info = bucket.info; var exMatrix = mat4.clone(painter.projectionMatrix); - if (info[prefix + '-rotation-alignment'] === 'map') { - mat4.rotateZ(exMatrix, exMatrix, painter.transform.angle); + var angleOffset = (info[prefix + '-rotation-alignment'] === 'map' ? painter.transform.angle : 0) - + (info[prefix + '-rotate'] || 0) * Math.PI / 180; + + if (angleOffset) { + mat4.rotateZ(exMatrix, exMatrix, angleOffset); } // If layerStyle.size > info[prefix + '-max-size'] then labels may collide @@ -49,8 +52,7 @@ function drawSymbol(gl, painter, bucket, layerStyle, posMatrix, params, imageSpr buffer = bucket.buffers.glyphVertex; texsize = [painter.glyphAtlas.width, painter.glyphAtlas.height]; } else { - var rotate = info[prefix + '-rotation-alignment'] === 'map'; - imageSprite.bind(gl, rotate || params.rotating || params.zooming); + imageSprite.bind(gl, angleOffset || params.rotating || params.zooming); buffer = bucket.buffers.iconVertex; texsize = [imageSprite.img.width, imageSprite.img.height]; }