首页 > 解决方案 > 加速大纲加载

问题描述

我使用以下函数在某些区域(例如状态)周围使用绘制边界,并且大多数情况下效果很好,但是在形状非常不规则的情况下会出现明显的延迟。我认为这是因为脚本正在检索大量数据点。有没有办法加快速度?也许我可以提前检索轮廓坐标,将其存储在本地然后使用它?有没有办法做到这一点?

function drawBoundary(state) {
    url = "https://nominatim.openstreetmap.org/search.php?state=" + state + "&polygon_geojson=1&format=jsonv2";
    fetch(url).then(function(response) {
        return response.json();
    })
    .then(function(json) {
        let geojsonFeature = json[0].geojson;
        let layer = L.geoJSON(geojsonFeature);
        // calc the zoom level
        let z = map._getBoundsCenterZoom(layer.getBounds());
        // fly duration, unit: second
        let flyDuration = 1.5;
        map.flyTo([json[0].lat, json[0].lon], z.zoom, {duration:flyDuration});
        setTimeout(function(){
            layer.addTo(map);
        }, flyDuration*1000);
    });
}

标签: openstreetmap

解决方案


推荐阅读