获取"未捕获TypeError:无法读取属性' lat'未定义"与mapbox和传单

时间:2014-05-18 17:19:47

标签: javascript leaflet mapbox

我是mapbox和传单的新手,如果这有点基础,我会提前道歉。我正在尝试加载带有标记的地图。但是,我收到此错误,我不知道如何调试它。 self.map.addLayer(连接器)抛出错误。有谁知道我做错了什么?感谢。

buildMap: function() {
  console.log('buildMap() function...');
  var lat, lng,
  self = this;

  navigator.geolocation.getCurrentPosition(function(data) {
    var lat, lng, latlng;
    lat = data['coords']['latitude'];
    lng = data['coords']['longitude'];
    debugger;

    self.map.remove();
    self.map = new L.mapbox.map('map', 'bmy78.map-z27ovm6p')
                            .setView(new L.LatLng(lat, lng), 15);

    console.log('lat', lat);
    console.log('lng', lng);

    // use mapbox
    mapboxUrl = "http://a.tiles.mapbox.com/v3/bmy78.map-z27ovm6p.jsonp";
    wax.tilejson(mapboxUrl, function(tilejson) {
      connector = new wax.leaf.connector(tilejson);
      self.map.addLayer(connector);
    });
  });

1 个答案:

答案 0 :(得分:0)

如果您想阻止Map“未定义”。

首先将你的地图变量声明为公共js变量(在你的html文档的头部和任何函数之外)

var map;

接下来,在文档就绪函数内构建映射(以确保正确加载传单),

$( document ).ready(function() {
  map= L.mapbox.map('map', 'bmy78.map-z27ovm6p')
  //here you try to ask the user position then setView to map
}

您现在可以在没有任何“未定义错误”的情况下访问地图变量,

祝你好运