我让Bing Maps使用Microsoft.Maps.Layer与临时的PushPins数组完美配合。现在,我想对这些引脚进行聚类,应该非常简单。 TypeScript可以很好地编译,但是在运行时却一直说Microsoft.Maps.ClusterLayer不是构造函数。
网络上的每个地方(包括SO在内)都说我应该能够使用一个PushPin数组作为参数来创建ClusterLayer,然后将其插入到地图中,而不是(非集群)图层中。给定一个Layer可以解决的问题,我很确定在代码运行时应该加载API并使其可用。此时的断点,然后添加Watch,表明Microsoft.Maps命名空间包含所有类型的对象,包括Layer,但是该命名空间中的任何内容都不以“ Cl”开头,这意味着即使不是全部,大多数API也已加载,但是不是ClusterLayer。
private markerLayer: Microsoft.Maps.Layer;
private clusterLayer: Microsoft.Maps.ClusterLayer;
...
// Working
if(!this.markerLayer) {
this.markerLayer = new Microsoft.Maps.Layer();
} else {
this.map.layers.remove(this.markerLayer);
}
this.markerLayer.setPrimitives(this.markers);
this.map.layers.insert(this.markerLayer);
// Non-working
if(!this.clusterLayer) {
this.clusterLayer = new Microsoft.Maps.ClusterLayer(this.markers);
this.map.layers.insert(this.clusterLayer);
} else {
this.clusterLayer.setPushpins(this.markers);
}
在我应该得到两个相同的层的情况下,我将工作和不工作都放在同一位置,一层是集群的,另一层不是。标有“正在工作”的块会像应该的那样显示标记。标记为“非工作”的块将引发“ Microsoft.Maps.ClusterLayer不是构造函数”异常。
答案 0 :(得分:0)
就是这样。可悲的是,它无法同步加载,因此我又回到了时机,但这是又一锅鱼。原始错误已解决。