You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Leaflet添加标记与搜索栏时出现this.callInitHooks错误求助

报错Uncaught TypeError: this.callInitHooks is not a function修复方案

该报错在Leaflet场景下基本由类/工厂函数调用错误、资源版本不兼容、语法错误三类原因导致,对应你的代码可按以下顺序排查修复:

1. 核心错误:LatLng调用语法错误

你的代码中标记实例化部分错误混用了Leaflet的工厂函数和构造类:

// 错误写法:L.latLng是工厂函数,不需要加new调用
marker = new L.Marker(new L.latLng(loc), {title: title} );

修改为以下任意一种即可:

// 方案1:保留new,使用大写开头的构造类L.LatLng
marker = new L.Marker(new L.LatLng(loc), {title: title} );
// 方案2:去掉new,使用小写开头的工厂函数L.latLng
marker = new L.Marker(L.latLng(loc), {title: title} );

2. 冗余图层加载问题

你的代码中连续4次实例化了L.geoJson(statesData)并添加到地图,仅保留最后一次赋值给geojson变量的实例即可,删除前面3行冗余的L.geoJson(statesData).addTo(map)代码,避免重复渲染导致的异常。

3. HTML标签语法错误

代码中地图容器的结束标签写错:

<!-- 错误写法 -->
<div id="map"></map>
<!-- 修改为 -->
<div id="map"></div>

4. 资源版本兼容校验

你使用的Leaflet版本为1.3.0,需确认本地引入的leaflet-search.js是适配Leaflet 1.x版本的,若该插件是适配Leaflet 0.7.x的旧版本,也会触发该报错,替换为对应兼容版本即可。
另外需确认你引入的censustracts.js中确实定义了statesData变量,避免变量未定义导致的后续渲染异常。


内容的提问来源于stack exchange,提问作者WilliamWang97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 23:33:00