如何改变geojson结果的格式

How to change format of geojson result?

本文关键字:geojson 结果 格式 改变 何改变      更新时间:2023-09-26

如果我这样做了:

function app(e) {
    var $tar = e.target.getLatLngs();
    alert($tar);
}
function onEachFeature(feature, layer) {
    layer.on({
        click: app
    });
}

我得到一个警告:

LatLng(19.08348, -155.54211),
LatLng(18.91619, -155.68817),
LatLng(19.05939, -155.93665),
LatLng(19.33888, -155.90806),
LatLng(19.70294, -156.07347),
LatLng(19.81422...

但是我需要得到这样的格式:

[19.08348, -155.54211],
[18.91619, -155.68817],
[19.05939, -155.93665],
[19.33888, -155.90806],
[19.70294, -156.07347],
[19.81422...

如果只是一个格式问题,那么您可以简单地这样做:

function app(e) {
   var $tar = e.target.getLatLngs();
   var formattedTar = $tar.map(function(obj) { // Loops through each Latlng object
       return [obj.lat, obj.lng]; // and returns an array instead
   });
   console.log(formattedTar);
}

更新:

如果你想打印数组,试试这个:

   alert(JSON.stringify(formattedTar));
演示:

JSFiddle

可以循环遍历元素数组并将它们压入一个新的数组(使用所需的格式)。参见的一种方法:

基于聊天更新

$(function() {
  // Assuming a whole bunch of latlngs  
  var target = [];  
  // these would come from your original e.target.getLatLngs();
  // I am just making some up for this demo
  for (i = 0; i < 10; i++) {
    var latlng = L.latLng(i, i);
    target.push(latlng);
  }
  alert(target);
  /* you only need the code from here on, right after your own alert(...) */
   
  // will hold the newly formatted values
  var newLatLng = []; 
  // convert to new format
  /** UPDATED Based on chat comments */
  $.each(target, function(index, value) {
    if( value.length ){
      $.each(value, function(ind, val) {
        var latLngArr = [val.lat, val.lng];
        newLatLng.push(latLngArr);
      });
    }else{
        var latLngArray = [value.lat, value.lng];
        newLatLng.push(latLngArray);
    }
  });
  console.log(newLatLng);
  alert(JSON.stringify(newLatLng));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/leaflet@1.0.1/dist/leaflet.js"></script>