这是前面提到的问题的延伸问题。 我在ngOnInit中有数据见下文,这些字段与标记对象不同。
来自http的数据在我的data.service.ts中附加到
items:any = [];
ngOnInit() {
this.dataService.fetchData(this.slug)
.subscribe(
(data) => {
this.checkData(data);//in this function its going to be appending to this.items
}
);
}
checkData(data) {
if (data.length === 0) {
return this.router.navigate(['']);
}
return this.items = data;
}
markers =[
{
lat: 51.673858,
lng: 7.815982
},
{
lat: 51.373858,
lng: 7.215982
},
{
lat: 51.723858,
lng: 7.895982
}
那么如何用my.items对象覆盖现有的marker对象(在这个对象中是lat和lng可用)。
Awn在@Eric N中是正确的,并且使用了marker.latitude和marker.longitude parseFloat()。
答案 0 :(得分:1)
哦,你的应用程序映射到markers.lat和markers.lng,但你正在接收data.latitude和data.longitude?更改标记和应用程序以使用与数据源相同的密钥会更加清晰。但是如果您使用两种类型的数据对象,则可以使用正确的键将接收到的数据映射到新对象。
let newItems:any[] = [];
for (var element in data) { // map over the data type
let marker = data[element];
newItems.push(
{
lat: marker.latitude, // create new objects matching the keys used in the app
lng: marker.longitude
}
}
this.items = newItems; // and assign