1

我最近开始研究 dojo 和 osm,所以这可能是一个简单的问题,但无法弄清楚为什么我会收到此错误。我必须从 osm 加载地图的 dojo 代码如下:

function InitMap() {
    map = L.map('map').setView([ 51.4848, -0.20325 ], 8);
    var osmUrl = 'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png';
    // 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';

    L
            .tileLayer(
                    osmUrl,
                    {
                        maxZoom : 18,
                        attribution : 'Map data &copy; <a href="http://openstreetmap.org">OpenStreet1Map</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery  <a href="http://cloudmade.com">CloudMade</a>'
                    }).addTo(map);


    var popup = L.popup();

    function onMapClick(e) {
        popup.setLatLng(e.latlng).setContent(
                "You clicked the map at " + e.latlng.toString()).openOn(map);
    }
    map.on('click', onMapClick);
}

我在浏览器控制台中遇到的错误是:ReferenceError: L is not defined但功能方面没有问题。请让我知道我在哪里做错了。

4

1 回答 1

1

我不是 OSM 专家,但我认为您可能缺少脚本文件。

查看http://www.openstreetmap.org/的源代码, 我看到全局变量L是作为第一个脚本 ( /assets/application-67bdd93f2bbf379cc96f0e9af383c99c.js)的一部分创建的

于 2013-07-22T18:00:19.670 回答