Leaflet 基于数据库属性的单张标记

Leaflet 基于数据库属性的单张标记,leaflet,Leaflet,我不熟悉传单,我想使用基于属性的标记图标。我学习了一些教程,可以使用PostGIS数据库中的几何数据在屏幕上显示标记 var-mapDataLayer=L.geoJson(geoJson{ pointToLayer:功能(特性、latlng){ var markerStyle={ 填充颜色:“F00”, 颜色:“FFF”, 填充不透明度:0.5, 不透明度:0.8, 体重:1, 半径:8 }; 返回L.circleMarker(latlng,markerStyle); }, onEachFeat

我不熟悉传单,我想使用基于属性的标记图标。我学习了一些教程,可以使用PostGIS数据库中的几何数据在屏幕上显示标记

var-mapDataLayer=L.geoJson(geoJson{
pointToLayer:功能(特性、latlng){
var markerStyle={
填充颜色:“F00”,
颜色:“FFF”,
填充不透明度:0.5,
不透明度:0.8,
体重:1,
半径:8
};
返回L.circleMarker(latlng,markerStyle);
},
onEachFeature:功能(功能,图层){
var html=“”;
用于(特性属性中的道具){
html+=prop+“:“+feature.properties[prop]+”
”; }; 层绑定弹出窗口(html); } }).addTo(地图);

使用这个,我得到了两个相同颜色的点。现在,我想使用不同属性的不同颜色/图标来分割这些点。

您可能只需遵循自定义标记的额外教程即可:

在本教程中,您将学习如何轻松定义自己的图标,供地图上的标记使用


我已经看了feature.properties[prop]

我创建了一个函数,为属性“status”提供五种颜色中的一种:

function getColor(status) {
return  status == "proposed"     ? '#800888' :
        status == "permitted"    ? '#969696' :
        status == "operational"  ? '#081d58' :
        status == "development"  ? '#006837' :
        status == "denied"       ? '#fed976' :
                                   '#252525';
}
然后我编辑了上面的代码以包含getColor函数

    var mapDataLayer = L.geoJson(geojson, {
    pointToLayer: function (feature, latlng) {
        var markerStyle = { 
            fillColor: getColor(feature.properties.status),
            color: "#FFF",
            fillOpacity: 0.5,
            opacity: 0.8,
            weight: 1,
            radius: 8
        };

        return L.circleMarker(latlng, markerStyle);
    },
    onEachFeature: function (feature, layer) {
        var html = "";
        for (prop in feature.properties){
            html += prop+": "+feature.properties[prop]+"<br>";
        };
        layer.bindPopup(html);
    }
}).addTo(map);
var-mapDataLayer=L.geoJson(geoJson{
pointToLayer:功能(特性、latlng){
var markerStyle={
fillColor:getColor(feature.properties.status),
颜色:“FFF”,
填充不透明度:0.5,
不透明度:0.8,
体重:1,
半径:8
};
返回L.circleMarker(latlng,markerStyle);
},
onEachFeature:功能(功能,图层){
var html=“”;
用于(特性属性中的道具){
html+=prop+“:“+feature.properties[prop]+”
”; }; 层绑定弹出窗口(html); } }).addTo(地图);
谢谢你的回复,ghybs,我看过那篇教程,但它没有提到从数据库检索属性。那么“属性”是什么意思?它们不是可以通过
功能.属性[prop]
访问吗?我所说的属性是指数据库中的属性,在本例中是“status”或“country”。就是这样,忘记了multiple=运算符,非常感谢ghybs