Mapbox / Leaflet Javascript:Uncaught TypeError:无法读取未定义的属性'lat'

时间:2015-08-22 20:12:48

标签: javascript leaflet mapbox

我正在尝试构建一个构建多色路径的应用程序(颜色取决于条件)并将它们显示在传单地图上。问题如下。我有两个功能:一个绘制,一个适合绘制区域的视图。当我将我的latlng数组传递给一个时,它完成了这项工作。当我将它传递给两个函数draw()& fitboduns()我得到一个“Uncaught TypeError:无法读取属性'lat'的未定义”错误...是否:(取决于顺序)

  • draw()函数,如果我绑定& draw->使用“addTo”方法行。
  • 如果我绘制&的bound()函数bound->使用fitBounds方法行。

我尝试过很多东西,这是我的最新代码

注意:数据是L.latLng的数组:data.push(new L.latLng(test [0],test [1]));

function draw(data) {

var singlePath;
singlePath = [];

for (var i = 0; i < data.length; i++) {

  singlePath.push(data[i],data[i+1]);
  alert ("singlePath=" + singlePath);
  var firstpolyline = L.polyline(singlePath, {
    //color: pathColor[i] -> Color ARRAY 
    color : 'blue',
    weight: 8,
    opacity: 0.5,
    smoothFactor: 1

  }).addTo(leafmap);
  singlePath = [];
}

function bound(data) {
var data_bound =[];

var bounds = (new L.latLngBounds(data));

data_bound.push([bounds.getNorthEast().lat,bounds.getNorthEast().lng]);
data_bound.push([bounds.getSouthWest().lat,bounds.getSouthWest().lng]);
leafmap.fitBounds(data_bound); 

}

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:1)

for (var i = 0; i < data.length; i++) {
  singlePath.push(data[i],data[i+1]);

此循环以i == data.length - 1结束,您引用data[i + 1],这将是未定义的。将循环的条件更改为i < data.length - 1