传单js:未捕获的TypeError:无法读取未定义的属性“ addLayer”

时间:2018-10-29 14:55:28

标签: javascript leaflet

我正在尝试使用Leaflet创建地图并在地图上显示标记。在地图上显示标记时,有人对我收到的以下错误有任何想法吗?

我可以启动页面的地图加载:

var map;
var ajaxRequest;
var plotlist;
var plotlayers=[];

function initmap() {
    // set up the map
    map = new L.Map('map');

    // create the tile layer with correct attribution
    var osmUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
    var osmAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
    var osm = new L.TileLayer(osmUrl, {minZoom: 8, maxZoom: 20, attribution: osmAttrib});       

    // start the map over Holland
    map.setView(new L.LatLng(52.36994, 4.90788),8);
    map.addLayer(osm);
}

我创建了一个标记:

var marker=L.marker([52.63275, 4.75175]).bindPopup('testmarker');

将标记添加到地图时,出现错误“未捕获的TypeError:无法读取未定义的属性'addLayer'”:

marker.addTo(map);

在initmap()函数中包含此行时,它可以正常工作。如此看来,地图实例无法访问或函数之外的东西?奇怪的是,由于变量是在脚本的开头在函数之外创建的?

谢谢!

1 个答案:

答案 0 :(得分:0)

解决了。该地图实例是在dom完全加载之前创建的,因此div“地图”尚不存在。我将包含javascript的脚本标签从页​​面的顶部移到了正文的末尾。