让我简要地解释一下我想要什么。我有一个包含2页的模块。一个用于创建新公司,另一个用于预览公司信息+编辑该公司信息。
一切都很好。现在,当我在表中单击其中一家公司时,它会打开"edit/IDOFORGANIZATIONHERE“,并显示所单击的组织(公司)的所有信息。
现在我需要实现谷歌地图的功能,以显示公司的位置基于公司的地址,城市,邮政编码和国家。
我已经成功地实现了Google Maps。
this.gMapsService.getLatLan('London' )
.subscribe(
result => {
this.__zone.run(() => {
this.lat = result.lat();
this.lng = result.lng();
})
},
error => console.log(error),
() => console.log('Geocoding completed!')
);
在我的gMapsService中,我有以下内容
import { Injectable, NgZone } from '@angular/core';
import { GoogleMapsAPIWrapper } from '@agm/core';
import { MapsAPILoader } from '@agm/core';
import { Observable, Observer } from 'rxjs';
import {} from '@types/googlemaps';
declare var google: any;
@Injectable()
export class GMapsService extends GoogleMapsAPIWrapper{
constructor(private __loader: MapsAPILoader, private __zone: NgZone) {
super(__loader, __zone);
}
getLatLan(address) {
console.log('Getting Address - ', address);
let geocoder = new google.maps.Geocoder();
return Observable.create(observer => {
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
observer.next(results[0].geometry.location);
observer.complete();
} else {
console.log('Error - ', results, ' & Status - ', status);
observer.next({});
observer.complete();
}
});
})
}
}
现在,如果你看一下第一个代码片段,它将显示谷歌地图,中心是伦敦市,这也很好用。
现在我想把这个字符串London改为公司信息的值,比如
organization.address
organization.city
organization.postalcode
organization.countryname
如果我像这样编写它,this.gMapsService.getLatLan(this.address)或this.gMapsService.getLatLan(organization.address)代码可以成功编译,但在我的控制台中,我可以看到传递的地址是“未定义的”。
但是,我的地址在网页的html部分显示正常,上面写着
Address: {{organization ? organization.address : ''}}<br>
我现在想知道如何将显示在Address:之后的文本转换为需要与函数getLatLan一起传递的字符串。
我试过制作
let fulladdress = organization.address + organization...bla bla
和传递的this.fulladdress,但它仍然显示地址、邮政编码、城市未定义
任何帮助都是非常感谢的。
发布于 2018-06-03 07:51:29
我已经自己修复了它,通过在函数中订阅组织的数据,即使它是在ngOnInit(){}
中执行的。
不管怎样,谢谢你。
https://stackoverflow.com/questions/50660306
复制相似问题