使用mapbox时geojson被忽略了

时间:2015-01-23 16:24:09

标签: mapbox

为什么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);
});

1 个答案:

答案 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