为什么mapbox会忽略我的geoJson标记符号,标记颜色和标记大小?如果由于某种原因它忽略了,你怎么设置?
示例geoJson:
"properties": {
"id": 578202,
"name": "University of North Carolina at Charlotte",
"marker-symbol": "marker",
"marker-color": "#ff8888",
"marker-size": "small",
"description": 1
}
脚本:
$.getJSON(url, function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function(feature, layer) {
var popupContent = feature.properties.name +'project(s)';
layer.bindPopup(popupContent, {
closeButton: true,
minWidth: 225
});
}
});
var map = L.mapbox.map('map', '', {
attributionControl: false
});
geojson.addTo(map);
});
答案 0 :(得分:1)
发生这种情况是因为L.GeoJSON
并不自动知道您要设置标记选项,因此如果遇到点要素,它只会添加默认标记。如果您想对点要素执行一些特殊操作,可以使用pointToLayer
的{{1}}函数,请查看以下示例:
L.GeoJSON
唯一的问题是它还添加了所有其他属性作为markericon的选项。就个人而言,我会编写一些逻辑,以便只将相关属性添加到图标选项中。
以下是关于Plunker的工作示例:http://plnkr.co/edit/3OJPXxOYdzX8mSnjEb90?p=preview
正如tmcw在评论中指出的那样(见下文):您可以使用var geoJsonLayer = L.geoJson(geoJson, {
pointToLayer: function (feature, latLng) {
return L.marker(latLng, {
icon: L.mapbox.marker.icon(feature.properties)
});
}
}).addTo(map);
,它完全符合您L.mapbox.featureLayer
尝试完成的内容,而不必诉诸L.GeoJSON
1}}我在上面描述的方法,它只使用适当的属性。它甚至可以为您加载数据,因此您可以取消jQuery的pointToLayer
。如果你问我,赢/赢的情况。您只需执行以下操作即可设置:
$.getJSON
以下是关于Plunker的工作示例:http://plnkr.co/edit/Og6tuYDIkTX7ftedoR3C?p=preview