Leaflet根据文本字段更改圆形标记颜色

3

我在我的leaflet地图上使用以下代码制作了圆形标记,一切都运行良好。

但是我想根据名为 "stype" 的属性字段显示不同颜色的标记。

请问有什么帮助或指导可以实现这个功能吗?

        function siteslabels (feature, layer){
        layer.bindPopup("<p class='info header'>"+ 
        "<b>" + feature.properties.SITE + "</b>" + 
        "</br>" + feature.properties.Address1 +
        "</br>" + feature.properties.stype +
        "</p>");
        };


        var geojsonMarkerOptions = {
            radius: 8,
            fillColor: 'green',
            color: 'black',
            weight: 1,
            opacity: 1,
            fillOpacity: 0.8
        };

        L.geoJson(sites, {
            pointToLayer: function (feature, latlng) {
                return L.circleMarker(latlng, geojsonMarkerOptions);
            },
            onEachFeature: siteslabels
        }).addTo(map);
2个回答

5
明白了。以下是我的代码,您可以查看:

搞定了。这是我的代码。

    <script>    
        <!-- long and lat for UK & Zoom level for whole of UK  -->
        var map = L.map('map',{ center:[54.038486, -1.948915], zoom: 5});

        L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
        }).addTo(map);



        <!-- LAYERS/SITES -->
        <!-- LAYERS/SITES POP UP CONTENT-->
        function siteslabels (feature, layer){
        layer.bindPopup("<p class='info header'>"+ 
        "<b>" + feature.properties.SITE + "</b>" + 
        "</br>" + feature.properties.Address1 +
        "</br>" + feature.properties.stype +
        "</p>");
        };

        <!-- LAYERS/SITES POP UP COLOUR CIRCLE MARKERS->
        function getColor(stype) {
          switch (stype) {
            case 'POP':
              return  'orange';
            case 'Regen':
              return 'green';
            case 'LLU':
              return 'blue';
            case 'Colo':
              return 'purple';
            case 'DMSU':
              return 'blue';
            default:
              return 'white';
          }
        }

        <!-- LAYERS/SITES ADD LAYER->
        L.geoJson(sites, {
            pointToLayer: function (feature, latlng) {
            return new L.CircleMarker(latlng, {radius: 8, 
                                                fillOpacity: 1, 
                                                color: 'black', 
                                                fillColor: getColor(feature.properties.stype), 
                                                weight: 1,});
            },
            onEachFeature: siteslabels
        }).addTo(map);


    </script>

1

请再次查看Leaflet GeoJSON教程pointToLayer选项部分。

如果您将点渲染为CircleMarkers,则可以轻松设置它们的style以使用不同的颜色。

如果您坚持使用标记符号,则必须提供自定义图标。您可以寻找标记插件,例如Leaflet.Extra-Markers


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接