Чтение длинных и длинных кординатов из объекта в файле geojson и установка в качестве центра карты открытых слоев при загрузке карты - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в открытии слоев и в настоящее время сталкиваюсь с проблемой чтения и нанесения широты и долготы к центру карты.

У меня есть идентификатор функции внутри файла geojson, который slat и slong, который я могу прочитать, используя var SSlat= feature.get('sat') и var SSlong =feature.get('slong'), которые я вызываю внутри функции стиля.

Я получаю lat long для первого выполнения, в конце полного выполнения функции стиля var SSlong и var SSLat становится неопределенным. пожалуйста, дайте мне знать, есть ли способ

var SSlat;
var SSlong;

var styleFunction = function(feature) {
  SSlat=feature.get('slat');
  SSlong=feature.get('slong');
};

const map = new Map({
  layers: [
    new TileLayer({
      source: new OSM()
    }),
    new VectorLayer({
      source: new VectorSource({
        url:'http://127.0.0.1:8080/abc.geojson',
        crossOrigin:'null',
        projection: 'EPSG:3857',
        format: new GeoJSON(), 
      }),
      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
  })
});

1 Ответ

1 голос
/ 17 апреля 2019

Я бы центрировал карту по геометрии объекта, когда объект загружен.Если свойства 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
  })
});

Для центрирования с использованием slat и slong свойств из объектов

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)], если свойство является строкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...