ЗДЕСЬ отображает JS API 3.1 - Ошибка для группы стилей 'non-collision' в Angular
Иногда я получаю эту ошибку при загрузке карты ЗДЕСЬ со спутниковым базовым слоем:
Tangram [error]: Error for style group 'non-collision' for tile 13/16/15542/12554/15 Cannot read property 'retain' of undefined: TypeError: Cannot read property 'retain' of undefined
at https://js.api.here.com/v3/3.1/mapsjs-core.js:377:259708
at Array.forEach (<anonymous>)
at https://js.api.here.com/v3/3.1/mapsjs-core.js:377:259679
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:4200/polyfills.js:3508:26)
at Object.onInvoke (http://localhost:4200/vendor.js:64284:33)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:4200/polyfills.js:3507:52)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (http://localhost:4200/polyfills.js:3267:43)
at http://localhost:4200/polyfills.js:4006:34
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:3540:31)
at Object.onInvokeTask (http://localhost:4200/vendor.js:64275:33)
Это предотвращает загрузку плиток вначале. Это случается не всегда. Примерно 3 из 10 страниц загружаются. Если панорамировать или переключиться на слой defaultLayers.vector.normal.map, он начнет правильно загружать плитки.
Я использую Angular 7.2.15 и HERE API 3.1.
Я инициализирую карту следующим образом:
const platform = new H.service.Platform({ apikey: apiKey });
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(
elementRef.nativeElement, // elementRef:ElementRef from directive constructor
defaultLayers.raster.satellite.map,
{
zoom: 15,
center: {lat: 0, lng:0}
}
);
const behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
const ui = new H.ui.UI(map);
const zoomControl = new H.ui.ZoomControl();
ui.addControl('zoom', zoomControl);
Как я могу загрузить карту в режиме спутникового просмотра без появления этой ошибки?
1 ответ
Возможной проблемой для поведения может быть загрузка некоторой библиотеки HERE JS после загрузки веб-страницы. Попробуйте, если добавление спутникового слоя позже в коде даст лучший отклик.
// default map base layer
var map = new H.Map(document.getElementById('mapContainer'),
defaultLayers.vector.normal.map,{
center: {lat:52.5160, lng:13.3779},
zoom: 13
});
// set base layer later
map.setBaseLayer(defaultLayers.raster.satellite.map);