如何在 Typescript 中使用 use-supercluster
How to use use-supercluster with Typescript
我在使用 TypeScript 实现 use-supercluster 时遇到了问题。我正在尝试使用集群来区分 Google 地图中的两种数据类型,例如红色集群与绿色集群。
我找不到任何关于将此库与 TypeScript 一起使用的文档,而且我没有从其类型中获得足够的信息:
那么,参数P
是什么?我正在按照 use-supercluster
creator's guide 添加集群,但在安装 supercluster
类型后,我在这里遇到错误:
const { clusters } = useSuperCluster({
points,
bounds,
zoom,
options: { radius: 75, maxZoom: 25 }
});
错误 1:
我已尝试手动创建具有以下属性的 GeoJSONProperty
接口:
interface GeoJSONProperty {
cluster: boolean;
pdId: string;
category: string;
}
然后我尝试用 PointFeature<GeoJSONProperty>
断言 points
但我得到了一个不同的错误:
错误 2:
我用const [bounds, setBounds] = useState(undefined);
“解决”了这个问题。但不确定这是否是一个好的做法。
那么,你知道任何与 useSuperCluster + TypeScript 相关的文档吗?或者你知道我在这里做错了什么吗?
好吧...我在 Github 上的图书馆回购协议中找到了 this file,它非常简单地解释了如何在 TypeScript 上使用 useSuperCluster()
。
回答我自己的问题,似乎 points
实际上被声明为 PointFeature<GeoJsonProperties>
的数组,其中 JsonProperties
来自 geojson library.
进口:
import { PointFeature } from 'supercluster';
import { BBox, GeoJsonProperties } from 'geojson';
然后:
const points: Array<PointFeature<GeoJsonProperties>> = coords.map(pd => ({
type: "Feature",
properties: {
cluster: false,
pdId: pd._id,
category: 'test'
},
geometry: { type: "Point", coordinates: [ pd.lat, pd.lng ] }
}));
此外,bounds
似乎声明为 BBox
,也来自 geojson 库。因此,为了完成这项工作,我必须在相同状态下定义边界,而不是在:
之后
const [bounds, setBounds] = useState([
-52.13013780765266,
-33.853076010021674,
-57.12647659234733,
-32.851013577053855
] as BBox);
我在使用 TypeScript 实现 use-supercluster 时遇到了问题。我正在尝试使用集群来区分 Google 地图中的两种数据类型,例如红色集群与绿色集群。
我找不到任何关于将此库与 TypeScript 一起使用的文档,而且我没有从其类型中获得足够的信息:
那么,参数P
是什么?我正在按照 use-supercluster
creator's guide 添加集群,但在安装 supercluster
类型后,我在这里遇到错误:
const { clusters } = useSuperCluster({
points,
bounds,
zoom,
options: { radius: 75, maxZoom: 25 }
});
错误 1:
我已尝试手动创建具有以下属性的 GeoJSONProperty
接口:
interface GeoJSONProperty {
cluster: boolean;
pdId: string;
category: string;
}
然后我尝试用 PointFeature<GeoJSONProperty>
断言 points
但我得到了一个不同的错误:
错误 2:
我用const [bounds, setBounds] = useState(undefined);
“解决”了这个问题。但不确定这是否是一个好的做法。
那么,你知道任何与 useSuperCluster + TypeScript 相关的文档吗?或者你知道我在这里做错了什么吗?
好吧...我在 Github 上的图书馆回购协议中找到了 this file,它非常简单地解释了如何在 TypeScript 上使用 useSuperCluster()
。
回答我自己的问题,似乎 points
实际上被声明为 PointFeature<GeoJsonProperties>
的数组,其中 JsonProperties
来自 geojson library.
进口:
import { PointFeature } from 'supercluster';
import { BBox, GeoJsonProperties } from 'geojson';
然后:
const points: Array<PointFeature<GeoJsonProperties>> = coords.map(pd => ({
type: "Feature",
properties: {
cluster: false,
pdId: pd._id,
category: 'test'
},
geometry: { type: "Point", coordinates: [ pd.lat, pd.lng ] }
}));
此外,bounds
似乎声明为 BBox
,也来自 geojson 库。因此,为了完成这项工作,我必须在相同状态下定义边界,而不是在:
const [bounds, setBounds] = useState([
-52.13013780765266,
-33.853076010021674,
-57.12647659234733,
-32.851013577053855
] as BBox);