У меня Bing Maps отлично работают со специальным массивом PushPins с использованием Microsoft.Maps.Layer. Теперь я хочу сгруппировать те контакты, которые должны быть очень простыми. TypeScript компилируется нормально, но во время выполнения постоянно повторяет, что Microsoft.Maps.ClusterLayer не является конструктором.
В любом месте в Интернете, в том числе здесь, в SO, говорится, что я должен иметь возможность создать ClusterLayer с массивом PushPin в качестве параметра, а затем вставить его в карту вместо (не кластерного) слоя. Учитывая, что 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 не является конструктором».