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