Javascript 如何在L.geoJSON pointToLayer中实例化标记
当我包含以下代码时,不会出现任何标记,控制台中的错误包括: 未捕获的TypeError:this.callInitHooks不是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
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});