我最近开始研究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,但在功能上没有问题。
请让我知道我在哪里做错了。

最佳答案

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

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

关于javascript - 为什么我在osm中遇到此错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17791656/

10-10 08:59