我想实现这种代码:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: { lat: -25.363, lng: 131.044 }
});
var source = Rx.Observable.fromEventPattern(
function (handler) {
return map.addListener('center_changed', handler);
},
function (handler, listener) {
google.maps.event.removeListener(listener);
}
);
source.subscribe(function () {
console.log(map.getCenter());
});
我尝试了很多方法,但是我在努力设置导入配置,因此我不会收到与“ Rx.Observable.fromEventPattern”有关的错误。
任何人都可以如何正确设置它。我正在使用“ rxjs”:“〜6.2.0”和Angular 6。
非常感谢
Hucho
答案 0 :(得分:2)
在使用Rxjs 6时,应按如下所示导入它-
import { fromEventPattern} from 'rxjs';
根据文档,所有可观察的创建方法都应像上面在rxjs 6中一样导入。
所以您的代码应如下所示-
var source = fromEventPattern(
function (handler) {
return map.addListener('center_changed', handler);
},
function (handler, listener) {
google.maps.event.removeListener(listener);
}
);
您也可以像上面一样导入Observable
。
请参阅此迁移文档: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md
答案 1 :(得分:0)
感谢您的帮助。终于成功了:
public $getBounds(): Observable<any> {
let map = this.map;
return fromEventPattern(
function (handler) {
google.maps.event.addListener(map, 'idle', handler);
},
function (handler, listener) {
google.maps.event.removeListener(listener);
}
)
}
我需要有呼叫者签名...
Hucho