Tôi đang làm việc với angular2-google-maps
và phiên bản mới nhất của Angular2. Tôi đang cố gắng chuyển đổi một số hàm thành phần bản đồ cục bộ thành các dịch vụ trong tệp riêng của chúng maps.service.ts
. Ví dụ:Angular2 Không thể tìm thấy không gian tên '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!");
}
}
});
}
}
Into cái gì đó như: 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);
}
}
));
});
}
Vấn đề tôi nhận được là google
biến không được ghi nhận khi tôi cố gắng sử dụng Observer<google.maps.GeocoderResult[]>
. Tôi có declare var google: any;
bên ngoài lớp dịch vụ.
Biến số google
hoạt động trong số map.componenet.ts
của tôi nhưng không được nhận dạng trong số maps.service.ts
.
Bạn nhập 'google' ở đâu? –
@ GünterZöchbauer Trong AppModule: 'AgmCoreModule.forRoot ({ apiKey: '--key--', thư viện: ['places'] })' – Milo
Bạn cần nhập khẩu TypeScript cũng cung cấp 'google'. Có vẻ như bạn đã sao chép mã từ một nơi nào đó. Bạn có thể xin vui lòng gửi một liên kết? –