openlayers+turf.js繪制線緩沖區


最近再做緩沖區的繪制,然后在網上各種查資料,最后決定用turf來實現;
剛開始這樣寫的,然后不出現緩沖區
      var line = turf.lineString([[8940117.74537665,5936319.233970245],[10407708.688452033,5740640.441560194],[10466412.326175049,5359066.796360594]]);
      var buffered = turf.buffer(line , val, {units: 'kilometers'});
      //創建數據geojson對象和數據源對象
      var format = new GeoJSON();
      var source = new VectorSource({ wrapX: false });
      // //讀取geojson數據
      var lineFeature  = format.readFeature(line);
      var bufferFeature = format.readFeature(buffered);
      // //將數據添加數據源的
      source.addFeature(lineFeature);
      source.addFeature(bufferFeature);
      var test = new VectorLayer({ source: source })
      this.map.addLayer(test)
並且還如下得錯誤
然后開始在網上查資料后,知道turf緩沖區不能用EPSG:3857的坐標系,需要轉成EPSG:4326(關於坐標系不清楚得,可以看 這里)
然后我轉過后再試驗
      let coordinates = '[[8940117.74537665,5936319.233970245],[10407708.688452033,5740640.441560194],[10466412.326175049,5359066.796360594]]';
      let bufferCoordinates = [],pointTransform=[];
      for (var i = 0; i < coordinates.length; i++) {
          pointTransform = transform(coordinates[i], "EPSG:3857", "EPSG:4326");
          bufferCoordinates.push(pointTransform);
        }
        var line = turf.lineString(bufferCoordinates);
        var buffered = turf.buffer(line , val, {units: 'kilometers'});
      //創建數據geojson對象和數據源對象
      var format = new GeoJSON();
      var source = new VectorSource({ wrapX: false });
      // //讀取geojson數據
      var lineFeature = format.readFeature(line);
      var bufferFeature = format.readFeature(buffered);
      // //將數據添加數據源的
      source.addFeature(lineFeature);
      source.addFeature(bufferFeature);
      var test = new VectorLayer({ source: source })
      this.map.addLayer(test)
到了這里發現雖然不報錯了,但是結果還是不出來,然后這樣看來代碼沒問題,我這個時候就開始寫 demo,然后在demo中查看發現運行是沒問題得;
那就奇了怪了,到底是哪里還有問題,最后又看了一遍官方文檔,然后加上了以下兩行代碼
lineFeature.getGeometry().transform('EPSG:4326', 'EPSG:3857');
bufferFeature.getGeometry().transform('EPSG:4326', 'EPSG:3857');

再次運行,成功出現緩沖區:

 

 參考:openlayers+turf.js實現緩沖區得繪制

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM