为什么L.polygon在某种程度上起作用而在另一种中起作用

时间:2017-01-26 11:27:41

标签: leaflet polygon geojson leaflet.draw

美好的一天, 我很抱歉,如果我的问题可能是基本的,但我认为将字符串转换为数组确实存在问题。

我正在尝试将多边形添加到地图(或图层)。我从MYSQL数据库中提取了一些多边形坐标,将其显示在地图中。

首先是我的代码:

function getGeofences(devise_id){


  $.ajax({
    type: "POST",
    url: "maps/sql/getGeofences.php",
    data: {devise_id:devise_id},
    success: result,
    error: error,
    dataType: "json"
  });

  function error(data)
  {
    console.log("Error getGeofences");
    console.log(data);
  }

  function result(data){
    console.log("Geofences from DB");

    for (var i = data.features.length - 1; i >= 0; i--) {
      console.log(data.features[i].geometry.coordinates);

     //var polygon = L.polygon(data.features[i].geometry.coordinates, {color: 'red'});
    var polygon = L.polygon([[51.436888577205,-1.373291015625],[51.169011079452,-1.494140625],[51.158676864424,-0.8624267578125],[51.505323411493,-0.889892578125],[51.436888577205,-1.373291015625]] , {color: 'red'});
      polygon.addTo(map);
    }

  }
}

此:

console.log(data.features[i].geometry.coordinates);

显示/打印:

  

“[[51.436888577205,-1.373291015625],[51.169011079452,-1.494140625],[51.158676864424,-0.8624267578125],[51.505323411493,-0.889892578125],[51.436888577205,-1.373291015625]]”

我不明白为什么这个

var polygon = L.polygon([[51.436888577205,-1.373291015625],[51.169011079452,-1.494140625],[51.158676864424,-0.8624267578125],[51.505323411493,-0.889892578125],[51.436888577205,-1.373291015625]] , {color: 'red'});

作品!

但是这个:

var polygon = L.polygon(data.features[i].geometry.coordinates, {color: 'red'});

不起作用!

请记住,这:

data.features[i].geometry.coordinates

打印:

  

[[51.436888577205,-1.373291015625],[51.169011079452,-1.494140625],[51.158676864424,-0.8624267578125],[51.505323411493,-0.889892578125],[51.436888577205,-1.373291015625]]

我认为,这是因为

的内容
data.features[i].geometry.coordinates
事实上,

是一个包含多个'[[]]'

的字符串

现在,我不知道如何将上面的字符串转换为rwally数组。所以,我不知道我的书中究竟是什么,但我需要“解析”

的内容
data.features[i].geometry.coordinates

我不知道怎么做!

你能建议我一个解决方案吗?

0 个答案:

没有答案