Возможно, вы уже нашли ответ на свой вопрос, но вот мои предложения о том, как этого добиться. Я предполагаю, что вы хотите изменять только центральное положение и уровень масштабирования вашей карты всякий раз, когда меняется ваш слайд.
Вы уже передаете параметры center и zoomLevel в качестве входных данных для вашего esri-map-component, но эти значения должны обновляться всякий раз, когда меняется слайд. Это может быть достигнуто путем изменения компонента приложения следующим образом:
constructor(private data: SlideService) { }
ngOnInit() {
this.currentSection = this.data.currentMessage.subscribe(msg => {
this.currentSection = msg.slice(-1);
this.updateMapCenter();
});
this.updateMapCenter();
}
updateMapCenter() {
let zoomlist:any[]=[];
for (let slide of slides){
if(slide.MapAttributes.viewType==="detailed"){
continue;
}
let zoom = slide.MapAttributes.Zoom
zoomlist.push(zoom)
}
this.mapZoomLevel = zoomlist[(+(this.currentSection)-1)]
let centerlist:any[]=[];
for (let slide of slides){
if(slide.MapAttributes.viewType==="detailed"){
continue;
}
let center = slide.MapAttributes.MapCenter
centerlist.push(center)
}
this.mapCenter = centerlist[(+(this.currentSection)-1)]
}
Таким образом, привязки к вашему компоненту esri-map переоцениваются при каждой смене слайда. Все, что вам нужно сделать сейчас, это прослушать эти изменения в вашем esri-map-component:
ngOnChanges(changes) {
if(this.mapView && changes && changes['center']) {
this.mapView.goTo(this._center);
this.mapView.zoom = this._zoom;
}
}
MapView должен быть свойством самого компонента esri-map.
Надеюсь, это поможет!