Javascript 如何在L.geoJSON pointToLayer中实例化标记

Javascript 如何在L.geoJSON pointToLayer中实例化标记,javascript,leaflet,Javascript,Leaflet,当我包含以下代码时,不会出现任何标记,控制台中的错误包括: 未捕获的TypeError:this.callInitHooks不是pointToLayer上的函数 如果您知道任何解决方案,请与我们分享 var map = L.map('map', { center: [53.423933, -7.94069], zoom: 7, layers: [grayscale] }); var url = "howd

当我包含以下代码时,不会出现任何标记,控制台中的错误包括:

未捕获的TypeError:this.callInitHooks不是pointToLayer上的函数

如果您知道任何解决方案,请与我们分享

var map = L.map('map', {
            center: [53.423933, -7.94069], 
            zoom: 7,
            layers: [grayscale]
        });

var url = "howdy.json";

var geojsonMarkerOptions = L.icon({
            iconUrl: 'howdy.png',
            iconSize:     [16, 28], 
            iconAnchor:   [8, 18], 
            popupAnchor:  [-3, -13] 
        });

function forEachFeature(feature, layer) {

        var popupContent = 
        feature.properties.Cabin+
        feature.properties.Crew + 
        feature.properties.Mobile;

        if (feature.properties && feature.properties.popupContent) {
            popupContent += feature.properties.popupContent;
        }
            layer.bindPopup(popupContent);
        };

      var howdy = L.geoJSON(null, {
        onEachFeature: forEachFeature, 
        pointToLayer: function (feature, latlng) {
            return L.Marker(latlng, geojsonMarkerOptions);
        }
  });

$.getJSON(url, function(data) {
        Shelter.addData(data);
});

Shelter.addTo(map);

错误很可能是由您的线路引起的:

返回L.标记(latlng、geojsonMarkerOptions);
…尝试实例化传单标记,调用
L.Marker
类构造函数,而不使用触发实例化的
new
JavaScript关键字


请注意与传单提供的factory
L.marker
(小写首字母
m
)的区别,它只是
新L.marker

的别名,Hi@ghybs您的建议运行良好。但是,标记现在显示为默认值,而不是L.iconHum,看起来您犯了第二个错误。有关标记选项,请参阅传单文档。您的
L.icon
应该传递给
icon
选项,而不是直接传递给
L.marker
第二个参数。如果您需要进一步的帮助,请随时为这个不同的问题提出新的问题。明白了。只需要更改行返回新的L.Marker(latlng,{icon:geojsonMarkerOptions});