【问题标题】:"this.update is not a function" following Leaflet JS tutorial遵循 Leaflet JS 教程的“this.update 不是函数”
【发布时间】:2019-01-02 22:14:05
【问题描述】:

我在Leaflet JS网站上复制这个教程:https://leafletjs.com/examples/choropleth/

添加控件的代码是这样的:

var info = L.control();

info.onAdd = function(mymap) {
//Create a div with a class of info
      this._div = L.DomUtil.create('div', 'info');
      this.update();
      return this._div;
};

但是当我这样做时,我收到以下错误:
未捕获的 TypeError:this.update 不是函数。

以下是我如何将教程中的代码合并到我的代码中:

var mymap = L.map('mapid').setView([41.850033, -87.6500523], 3.2);

L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
            attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
            maxZoom: 15,
            id: 'mapbox.mapbox-streets-v7',
            accessToken: 'pk.eyJ1IjoiYWxsYW5yaW1iYW4iLCJhIjoiZWEyYTc5NDhmZjdmYjQzM2I3MDdkN2I4OTQ3MjQyNWEifQ.U2GPM8lv7x--qHhbjNo5Ug'
        }).addTo(mymap);

        //control that shows county info
        var info = L.control();

        info.onAdd = function (mymap) {
            //Create a div with a class of info
            this._div = L.DomUtil.create('div', 'info');
            this.update();
            return this._div;
        };

        //method that will update the control based on feature properties passed

        info.udpate = function (props) {
            this._div.innerHTML = '<h4>US Election Result</h4>' + (props ? '<b>' + props.NAME + '</b>' : 'Hover over a county');
        };

        info.addTo(mymap);  

您可以在此处查看我的网页和源代码中的错误: https://sushirittoman.github.io/maps/counties_project/index.html

请帮忙。谢谢。

【问题讨论】:

    标签: javascript web controls leaflet mapping


    【解决方案1】:

    我什至不知道它是什么,但我想通了。
    教程页面还显示the final result,它使用完全相同的代码。
    我开始调试,并得到了它。
    你只是拼错了这个词......

    info.udpate → info.update
    

    供您参考。(以防万一)
    在这种情况下,“this”表示“信息”。
    所以你只是在那部分调用了自己的函数。(名称更新并不重要。)

    【讨论】:

    • 谢谢。这似乎解决了我的问题。请问你用什么软件调试?我是 javascript 的初学者。
    • 没什么特别的!我用的是Chrome开发者工具,先把断点放在调用update方法的那一行,然后我把F11(step into next function call),程序去update方法没有问题。所以我在你的网站上检查了同样的方式。你知道 Stack Overflow,你接受这个问题就结束了。会很棒的。
    猜你喜欢
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2012-06-28
    • 1970-01-01
    • 2019-09-07
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多