gpt4 book ai didi

javascript - Mapbox.js GEOJson 与 Markercluster

转载 作者:行者123 更新时间:2023-12-03 06:15:57 25 4
gpt4 key购买 nike

我想通过 MarkerCluster 和 mapbox.js 实现 GEOJson。

没有 Markercluster,一切正常:

  $.ajax({
url: 'dashboard/geoJSON',
dataType: 'json',
type: 'POST',
success: function(geojson) {

locations = L.mapbox.featureLayer().addTo(map)
locations.on('layeradd', function (e) {
var marker = e.layer;
markers.push(marker);
});

locations.setGeoJSON(geojson);

...

但是当我尝试实现MarkerCluster时,它只显示1个标记

        ...
success: function(geojson) {

locations = L.mapbox.featureLayer().addTo(map)
var clusterGroup = new L.MarkerClusterGroup();
locations.on('layeradd', function (e) {
var marker = e.layer;
markers.push(marker);
clusterGroup.addLayer(markers);
});
locations.setGeoJSON(geojson);
map.addLayer(clusterGroup);

并向我显示以下错误:

TypeError: t.onAdd is not a function

任何人都可以帮我吗,我如何成功地将远程服务器上的markercluster与GEOJson结合起来?提前致谢

//编辑:找到了一个不同的示例,它已经可以使用:

      var markers = L.markerClusterGroup();

var geoJsonLayer = L.geoJson(geojson, {
onEachFeature: function (feature, layer) {

}
});
markers.addLayer(geoJsonLayer);

map.addLayer(markers);

map.fitBounds(markers.getBounds());

但现在它失去了我的“默认”样式,具有“标记颜色”-“标记大小”等属性。

我现在如何设置标记的样式?

Mapbox 有点奇怪,看起来总是有至少 10 种方法来解决此类问题;)

最佳答案

如果您的 markers 变量是一个数组(当您对其使用 .push() 时),则无法使用 clusterGroup.addLayer(markers).您可以使用 .addLayers(markers)(在 addLayers 上使用“s”)。

我想您无论如何都不想在每个“layeradd”事件中添加整个数组,所以也许您的意思是clusterGroup.addLayer(marker)(没有“s”在标记上,即您的个人标记/特征)。

顺便说一句,您可以使用 L.mapbox.featureLayer()onEachFeature 选项,而不是使用事件监听器。

最后,不要将您的功能组也添加到 map 中。这是当前添加您唯一标记的标记。您想让您的集群组自动处理从 map 添加/删除的标记。

关于javascript - Mapbox.js GEOJson 与 Markercluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39100892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com