0

这是json响应

[{"lat": "36.15900011", "lon": "-115.17205183"}, {"lat": "36.15899561", "lon": "-115.17276155"}]

下面的代码给出了这个错误:

TypeError: item is undefined
...: new ol.geom.Point(ol.proj.transform([item.lon , item.lat], 'EPSG:4326', 'EPSG:...

下面的代码里面<script>

    $.ajax({
     url:'parser', success:function(response){
      $(document).ready(function(){
      var jsonlen = response.length;
      for (var i=0; i<=jsonlen; i++){
        var item = response[i];
        var iconFeature = new ol.Feature({  
        geometry: new ol.geom.Point(ol.proj.transform([item.lon , item.lat], 'EPSG:4326', 'EPSG:3857')),
        name:'Null Island',
        rainfall:500
      })
        var vectorSource = new ol.source.Vector({
        // empty vector
      })
      vectorSource.addFeature(iconFeature);
      }

我不知道如何连续给 json 响应iconFeature

4

1 回答 1

1

首先,从处理程序中解开您的代码,这里没有任何意义。我已经在代码中对其进行了修改。

其次,即使长度为空,您的 for 循环也会运行。这就是你变得不确定的原因。
您只需要使用小于、不小于或等于。因为,如果长度为零,并且i从零开始,那么条件将为真并且 response[0] 将被调用,即使响应是一个空数组。返回undefined

第三(我无法帮助您),您必须检查响应以确保数据存在。好像不是。

  $.ajax({
     url: 'parser',
     success: function (response) {
         var jsonlen = response.length - 1;         
         for (var i = 0; i < jsonlen; i++) {
             var item = response[i];
             var iconFeature = new ol.Feature({
                 geometry: new ol.geom.Point(ol.proj.transform([item.lon, item.lat], 'EPSG:4326', 'EPSG:3857')),
                 name: 'Null Island',
                 rainfall: 500
             });
             var vectorSource = new ol.source.Vector({
                 // empty vector
             })
             vectorSource.addFeature(iconFeature);
         }
     }
 });
于 2014-10-25T17:41:59.900 回答