我试图在另一个函数中调用 setMarker() 函数。但是标记没有设置。我不知道为什么,但可能是因为 setMarker() 函数是异步的,因为 Promise。
获取城市()
getCities(rawData) {
for (const index in rawData['data']) {
if (rawData.meta.c0Name == 'city') {
const city: string = rawData['data'][index]['c0'];
if (city != undefined) {
this.setMarker(city);
}
}
}
设置标记()
setMarker(location: string) {
const provider = new OpenStreetMapProvider();
const query_promise = provider.search({
query: location,
});
query_promise.then(
(value) => {
// Success!
const x_coor = value[0].x;
const y_coor = value[0].y;
const label = value[0].label;
this.citiesLayer = [
L.marker([y_coor, x_coor])
.bindPopup('<b>Found location</b><br>' + label)
.addTo(this.citiesLayerGroup),
];
},
(reason) => {
console.log(reason); // Error!
}
);
}
我从 webDataRocksComponent 获得的 rawData
getDataForMap() {
this.child.webDataRocks.getData(
{},
(rawData) => {
this.mapComponent.getCities(rawData);
},
(rawData) => {
this.mapComponent.getCities(rawData);
}
);
}