我有一个使用Google地图的Ionic应用程序。我正在尝试从数据json api获取经纬度和经度,然后将该数据json api将该数据注入到Google Maps折线中。提取数据json api可以正常工作,没有问题,但是当我将对象放入Google Maps时得到错误Error: Cannot find a differ supporting object '33.265625' of type 'number'. NgFor only supports binding to Iterables such as Arrays.
,请使用forEach在数组中移动。
我的代码:
async getmarker(){
this.http.get('/v1/flightjson?flightId=201',{},{})
.then( data=>{
// this.latitude = JSON.parse(data.data).result.response.data.flight.track.latitude
// this.longitude = JSON.parse(data.data).result.response.data.flight.track
for(let datas of JSON.parse(data.data).result.response.data.flight['track']) {
this.longitude = datas.longitude
this.latitude = datas.latitude
console.log(this.longitude)
// Do something.
}
})
}
loadMap() {
let AIR_PORTS = [
this.latitude,
this.longitude
];
this.map = GoogleMaps.create('map_canvas');
let polyline: Polyline = this.map.addPolylineSync({
points: AIR_PORTS,
color: '#AA00FF',
width: 10,
geodesic: true,
clickable: true // clickable = false in default
});
polyline.on(GoogleMapsEvent.POLYLINE_CLICK).subscribe((params: any) => {
let position: LatLng = <LatLng>params[0];
let marker: Marker = this.map.addMarkerSync({
position: position,
title: position.toUrlValue(),
disableAutoPan: true
});
marker.showInfoWindow();
});
}
html
<div id="map_canvas"></div>
答案 0 :(得分:-1)
for(let datas of JSON.parse(data.data).result.response.data.flight['track']) {
this.longitude = datas.longitude
this.latitude = datas.latitude
}
在上面的for
循环中,我假设this.longitude
和this.latitude
将是数组。
您应该在push
和this.longitude
中放置this.latitude
个元素(如下所示),而不是替换先前的值。
this.longitude.push(datas.longitude);
this.latitude.push(datas.latitude);
您可能正在使用这些变量遍历地图上的不同点,因为它们是纯数字,ngFor
将引发错误,指出ngFor
中的内容应为iterable
。
Array
是iterable
,而number
不是。