网站搜索

angular - 如何在 VS Code IntelliSense 中显示 Leaflet Marker-Cluster 可冻结方法


我正在做一个 Angular 项目,其中使用了 Leaflet 地图服务。我遇到了一个聚类问题。我想切换聚类功能,为此我找到了一个包,它有启用/禁用聚类功能的方法:Leaflet.MarkerCluster.Freezable

我已按照说明进行了软件包安装:

  • npm install leaflet.markercluster.freezable --save
    它安装在我的 node_modules 文件夹下,并更新了 package.json(安装成功)
  • 现在如果我尝试在我的 TypeScript 文件 中 import 'leaflet.markercluster.freezable';,我的 VS Code 在 IntelliSense 功能中不会显示该包的方法。

我不明白哪里出了问题(我认为可能是导入出了问题)。

答案#1

不幸的是,目前还没有可用于 Leaflet.MarkerCluster.Freezable 库的类型定义。

你应该能够自己写出它们,大致如下:

leaflet.markercluster.freezable.d.ts

import 'leaflet';
import 'leaflet.markercluster';

declare module 'leaflet' {
  // Augment the MCG class through an interface with the same name
  interface MarkerClusterGroup {
    freezeAtZoom(frozenZoom?: number | boolean | 'max' | 'maxKeepSpiderfy'): this;

    unfreeze(): this;

    disableClustering(): this;

    disableClusteringKeepSpiderfy(): this;

    enableClustering(): this;
  }
}

然后在你的 TypeScript 项目配置中引用这个定义文件。

游乐场链接

答案#2

请将 leaflet.markercluster.freezable.js 文件路径添加到您的 angular cli json 文件的 scripts 部分,如下所示

..\node_modules\leaflet.markercluster.freezable\dist\leaflet.markercluster.freezable.js

"scripts": [
        "../node_modules/angular-ui-grid/ui-grid.min.js",
   "../node_modules/leaflet.markercluster.freezable/dist/leaflet.markercluster.freezable.js"
      ],

然后我认为它将能使用 import 'leaflet.markercluster.freezable'