未捕获类型错误:L.geoJson.ajax 不是函数 Leaflet.js Heatmap.js

问题描述 投票:0回答:2

您好,我面临这个错误,l.geoJson.ajax 不是函数。我不明白为什么我会遇到这个错误。我在某处读到我们必须将

leaflet.ajax.min.js
文件放在根目录中,但它仍然不起作用。有人可以向我解释一下我做错了什么吗?这是js代码:

map = L.map('hmap',{center: [53.15, -6.7],zoom: 10});

    // OSM Baselayer
    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(map);

    var kildareStyle = {
        "fillColor": "#CC9933", 
        "color": "#000000",
        "weight": 2,  
        "fillOpacity": 0.2
    };

    var pointStyle = {
        radius: 8,
        fillColor: "#ff7800",
        color: "#000",
        weight: 1,
        opacity: 1,
        fillOpacity: 0.8

    };
     var kildare = new L.geoJson.ajax('assets/kildare.geojson', {style:kildareStyle}).addTo(map);
// var points = new L.GeoJSON.AJAX('assets/kildare.geojson').addTo(map);

var heat = L.heatLayer(heat_points, {radius:12,blur:25,maxZoom:11}).addTo(map);

有人可以向我解释一下我做错了什么吗?

leaflet heatmap
2个回答

0
投票

此答案适用于那些尝试使用

leaflet-ajax
实现网络应用程序的人。

我创建了这个问题https://github.com/calvinmetcalf/leaflet-ajax/issues/60 - 最好检查一下,看看是否有比我聪明的人发布了更好的答案。我在那里写了这个:


我找不到任何有关如何让此插件在 https://www.npmjs.com/package/react-leaflet(即 React 或任何 WebApp)项目中工作的信息。我必须执行以下操作 - 哦,它也是一个 Typescript 项目,但在解决这个问题之后,似乎我不需要修改

tsConfig.ts
,尽管理论上以下更改将在 IDE 中有所帮助。然而,尽管指定了一个目录,我看不到正在创建的类型目录,也看不到正在生成的
.d.ts
文件(此类目录和文件在此更改之前已经存在)。也许这仅适用于本地
.js
文件,而不是
node_modules
中的文件:

// tsConfig.ts
  "compilerOptions": {
    ...
    "emitDeclarationOnly": true,
    "declarationDir": "./types",
}
// App.tsx
import "./init";       // necessary to have a definition for global
import "leaflet-ajax"; 
import L, {
    ...
} from "leaflet";
import {
  MapContainer,
  ...
} from "react-leaflet";
//init.js
window.global ||= window;

我不确定是否有更好的方法来实现这一点,尽管一方面,在使用 Typescript 时拥有一个

.d.ts
文件(例如
@types/leaflet-ajax
)会很有帮助。

如果有更好的方法请告诉我们。如果没有,您可以将此信息添加到自述文件中吗?


一定要看看https://github.com/calvinmetcalf/leaflet-ajax/issues/60看看是否有更好的答案。

© www.soinside.com 2019 - 2024. All rights reserved.