【发布时间】:2017-07-12 16:36:03
【问题描述】:
我正在使用angular2-google-maps 和最新版本的 Angular2。我正在尝试将一些本地地图组件功能转换为他们自己的文件maps.service.ts 中的服务。例如:
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);
}
}
));
});
}
我遇到的问题是,当我尝试使用 Observer<google.maps.GeocoderResult[]> 时,google 变量未被识别。我在服务类之外也有declare var google: any;。
google 变量在我的map.componenet.ts 中有效,但在maps.service.ts 中无法识别。
【问题讨论】:
-
你在哪里导入
google? -
@GünterZöchbauer 在 AppModule 中:` AgmCoreModule.forRoot({ apiKey: '--key--', libraries: ['places'] })`
-
您还需要一个提供
google的TypeScript 导入。似乎您从某处复制了代码。可以发个链接吗? -
我添加了`
-
AgmCoreModule似乎没有提供与Geocoder相关的任何内容
标签: google-maps angular typescript angular-cli angular2-google-maps