为什么map.fitBounds(group.getBounds())处理一组数据而不处理另一组数据?

时间:2018-12-14 03:49:26

标签: javascript leaflet

我尝试查看地图上的所有标记。

为此,我实现了以下逻辑

所有逻辑都在对象内部。

setLocation(places) {
    try {
        const {
            markers,
            markerArray
        } = this.getMarkers(places);
        const group = L.featureGroup(markerArray);

        this.map.addLayer(markers);
        this.map.fitBounds(group.getBounds());
    } catch (error) {
        console.log(`Error: ${error.message} Probably no places found`);
    }
},

places是一个对象数组,其中每个对象都包含纬度和经度属性。对于每个这些对象,都会创建一个标记。逻辑如下,并从getMarkers()方法中调用

getMarkers(points = buysmoke.points) {
    const markers = L.markerClusterGroup();
    const markerArray = [];

    for (const point of points) {
        const content = this.getContent(point);
        const icon = this.createIcon(point.categoria);
        const popup = this.createPopup(content);
        const marker = L.marker([point.latitud, point.longitud], {
            icon: icon
        }).bindPopup(popup);

        markerArray.push(marker);
        markers.addLayer(marker);
    }

    return {
        markers: markers,
        markerArray: markerArray
    };
},

此逻辑正在处理与美国相对应的一组数据。当我尝试使用来自欧洲的数据集进行同样的操作时,逻辑不起作用,而是向我显示了整个世界的地图。地图上的其余互动将继续起作用。

我试图了解原因,但没有成功。

如果您需要任何其他信息,请告诉我。

谢谢

更新1

欧洲的数据集包含195条记录,仅对其中的12条进行探测并按预期工作。经度和纬度是否有可能证明了这一问题?如果可能的话,有什么友好的方法可以跟踪问题吗?

更新2

实际上,问题是由一系列错误的长度引起的,长度不正确是一种特殊的坐标。将其从数据集中删除时,标记会按估计的那样绘制在地图上

无论如何,非常感谢。我希望这种经历能为某人服务

0 个答案:

没有答案