从geojson文件中的要素读取纬度和经度坐标,并将其设置为地图加载时openlayers地图的中心

时间:2019-04-17 10:41:14

标签: openlayers

我是开放层的新手,目前正面临阅读和绘制纬度以及长至地图中心的问题。

我在geojson文件中有功能ID,它是add_custom_commandadd_custom_target,我可以使用样式函数中调用的slatslong来读取它们。

我花了很长的时间来执行第一次,在完整样式函数执行结束时,变量var SSlat= feature.get('sat')和变量var SSlong =feature.get('slong')变得不确定。请让我知道有什么办法

SSlong

1 个答案:

答案 0 :(得分:1)

在加载地图项时,我会将地图放在地图项的几何中心。如果slat和slong属性不同并且更受欢迎,则可以改用它们。您应该将源分配给变量,以使其易于引用。

import {getCenter} from 'ol/extent.js';

let vectorSource = new VectorSource({
    url:'http://127.0.0.1:8080/abc.geojson',
    format: new GeoJSON(), 
  });

vectorSource.on('addfeature', function(e) {
  map.getView().setCenter(getCenter(e.feature.getGeometry().getExtent()));
});

const map = new Map({
  layers: [
    new TileLayer({
      source: new OSM()
    }),
    new VectorLayer({
      source: vectorSource,
      style: styleFunction
    })
  ],
  target: 'map',
  view: new View({
    center: [-9752120.04, 5132251.45],// here add lat and long which needs to be taken from geojson file
    zoom: 13
  })
});

使用要素中的slatslong属性居中

vectorSource.on('addfeature', function(e) {
  var SSlat = e.feature.get('slat');
  var SSlong = e.feature.get('slong');
  if (SSlat && SSlong) {
    map.getView().setCenter(fromLonLat([SSlong, SSlat]);
  }
});

如果属性是字符串,则可能需要使用[Number(SSlong), Number(SSlat)]