我正在使用angular2-google-maps
和最新版本的Angular2。我正試圖將其中一些本地地圖組件功能轉換爲它們自己的文件maps.service.ts
中的服務。例如:Angular2找不到名稱空間'google'
map.component.ts
getGeoLocation(lat: number, lng: number) {
if (navigator.geolocation) {
let geocoder = new google.maps.Geocoder();
let latlng = new google.maps.LatLng(lat, lng);
let request = { latLng: latlng };
geocoder.geocode(request, (results, status) => {
if (status == google.maps.GeocoderStatus.OK) {
let result = results[0];
if (result != null) {
this.fillInputs(result.formatted_address);
} else {
alert("No address available!");
}
}
});
}
}
成類似:maps.service.ts
getGeoLocation(lat: number, lng: number): Observable<google.maps.GeocoderResult[]> {
let geocoder = new google.maps.Geocoder();
let latlng = new google.maps.LatLng(lat, lng);
let request = { latLng: latlng };
return new Observable((observer: Observer<google.maps.GeocoderResult[]>) => {
geocoder.geocode({ request }, (
(results: google.maps.GeocoderResult[], status: google.maps.GeocoderStatus) => {
if (status == google.maps.GeocoderStatus.OK) {
observer.next(results);
observer.complete();
} else {
console.log('Geocoding service failed due to: ' +status);
observer.error(status);
}
}
));
});
}
我得到的問題是,google
變量是不被認可的時候我嘗試使用Observer<google.maps.GeocoderResult[]>
。我也有declare var google: any;
以外的服務類。
google
變量在我的map.componenet.ts
中有效,但在maps.service.ts
中未被識別。
你在哪裏輸入'google'? –
@GünterZöchbauer內的AppModule:'AgmCoreModule.forRoot({ apiKey: '--key--', 庫:[ '地方'] })' – Milo
你需要一個打字稿進口所提供'google'。似乎你從某處複製了代碼。你能發表一個鏈接嗎? –