我正在构建一个查询Google Maps Places Autocomplete API并返回对象数组的服务。服务本身非常简单。我正在使用Maps JS API。字符串将传递给服务,并返回匹配项列表。
问题是如何使该服务输出成为Angular Observable?
这是我现在的位置:
import {Injectable, OnInit} from '@angular/core';
import {Observable} from 'rxjs/Rx';
declare var google: any;
@Injectable()
export class GoogleMapsService {
getAutocomplete(input = {'input': '', 'types': [] } ) {
var autocomplete = new google.maps.places.AutocompleteService();
return autocomplete.getPlacePredictions({ input: input.input });
}
}
Run Code Online (Sandbox Code Playgroud)
但这不是可观察的,我不能.subscribe做到这一点。
该文档说autocomplete.getPlacePredictions有两个参数:request和callback函数。因此,您可以执行以下操作:
Observable.create(obs => {
let displaySuggestions = function (predictions, status) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
obs.error(status);
}
else {
obs.next(predictions);
obs.complete();
}
};
var service = new google.maps.places.AutocompleteService();
service.getQueryPredictions({input: 'test'}, displaySuggestions);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |