GeoJSON中的样式标记基于Mapbox中的非字符串要素属性

时间:2016-09-13 11:23:32

标签: mapbox geojson mapbox-gl mapbox-gl-js

正如标题所示,我想设置存储在GeoJSON文件中的一些标记。在每个功能中,我根据我想要旋转标记的方式保存了一个"旋转":some_integer。

在Mapbox的stylejson中,我为标记编写了以下样式:

    {
        "id": "markers_test",
        "type": "symbol",
        "source": "markers_test",
        "layout": {
            "symbol-placement": "point",
            "icon-image": "marker_{style_id}",
            "icon-rotate": "{rotate}",
            "text-field": "{name}",
            "text-font": ["Open Sans Semibold"],
            "text-anchor": "top-left",
            "text-padding": 20,
            "text-size": 10,
            "text-optional": true
        },
        "paint": {
            "text-color": "#dddddd",                
            "text-halo-color": "#0000ff",
            "text-halo-width": 1,
            "text-halo-blur": 1
        }
    }

设置正确的名称和图标可以完美地运行,但是一旦我尝试设置旋转,它就会崩溃,说值应该是数字,而不是字符串。仅 - 我如何引用字符串外部要素的属性?

1 个答案:

答案 0 :(得分:1)

{token}语法仅适用于text-fieldicon-image。对于所有其他属性,您必须使用property function syntax

{
    "id": "markers_test",
    "type": "symbol",
    "source": "markers_test",
    "layout": {
        "symbol-placement": "point",
        "icon-image": "marker_{style_id}",
        "icon-rotate": {
            "property": "rotate",
            "stops": [[0, 0], [365, 365]]
        },
        "text-field": "{name}",
        "text-font": ["Open Sans Semibold"],
        "text-anchor": "top-left",
        "text-padding": 20,
        "text-size": 10,
        "text-optional": true
    },
    "paint": {
        "text-color": "#dddddd",                
        "text-halo-color": "#0000ff",
        "text-halo-width": 1,
        "text-halo-blur": 1
    }
}