Преобразование OpenLayers Polygon в GeoJSON с другой проекцией - PullRequest
0 голосов
/ 22 января 2019

Аналогично проблеме, обнаруженной в этом вопросе

Как преобразовать координаты многоугольника OpenLayers в широту и долготу?

Я настроил базовую карту для захвата пользователяопределил полигон и преобразовал его в GeoJSON, хотя я могу сделать это с его собственной проекцией (ESPG: 3857). Я хотел бы взять захваченный GeoJSON и преобразовать его в EPSG: 4326 - который я затем сохраню.Использование описанного выше метода захвата объекта в событии drawend и выполнения преобразования, однако, удаляет многоугольник, поскольку новые координаты больше не представлены в проекции карты.Я не могу понять, как сохранить GeoJSON в нужном мне формате, не удаляя существующий многоугольник

. Я попытался выполнить это с помощью getFeatures для векторного источника многоугольника, а затем выполнить преобразование изпроекция, которую я использую для проекции, которую я хочу, но она по-прежнему возвращает те же координаты, я также (как и в связанной статье) пытался использовать writeFeatureObject, но он по-прежнему сохраняет неправильно

https://jsfiddle.net/20gxo3nt/


dragBox.on('drawend', function(evt){

/*   geom = evt.feature.getGeometry().transform('EPSG:3857', 'EPSG:4326');
  console.log(geom.getCoordinates()); */

});

$( "#save" ).click(function() {
  var geom=vectorSource.getFeatures();
  console.log(geom);
  var writer=new ol.format.GeoJSON();
  var geoJsonStr = writer.writeFeatures(geom);
  console.log (geom.proj.transform('EPSG:3857', 'EPSG:4326'));
  /* console.log(geoJsonStr) */
});

Раскомментирование кода в событии drawend правильно укажет.log координаты, а также продемонстрирует исчезновение многоугольника

1 Ответ

0 голосов
/ 23 января 2019

Чтобы получить новый геойсон

  var geom = [];
  vectorSource.forEachFeature( function(feature) { geom.push(new ol.Feature(feature.getGeometry().clone().transform('EPSG:3857', 'EPSG:4326'))); } );
  var writer = new ol.format.GeoJSON();
  var geoJsonStr = writer.writeFeatures(geom);
   console.log(geoJsonStr);
...