如何从Geocomplete jQuery插件中的Google地图获取缩放级别?

时间:2014-01-08 12:31:48

标签: jquery google-maps jquery-plugins zooming

我正在尝试修改this plugin以获取Google地图的缩放级别。

我有这段代码在我以前的Google Map初始化版上运行良好,但现在它似乎没有做它应该做的工作:

var ZoomLevel = 14; // as a Default value

google.maps.event.addListener(this.map, 'zoom_changed', function(ee) {
    google.maps.event.addListenerOnce(this.map, 'bounds_changed', function(e) {
        ZoomLevel = this.map.getZoom();
    });
});

我正在添加initMap()插件的$.geocomplete()方法。

我的HTML文档的所有范围都提供了此ZoomLevel变量,但它不会随时更新,并且不会触发这两个zoom_changedbounds_changed事件我是否改变了界限,缩放,标记位置等等。

关于如何在此插件中实现此功能以获取当前的缩放级别,我真的需要帮助。

2 个答案:

答案 0 :(得分:1)

而不是跟踪缩放级别,您只需按需获取它。

$(<selector>).geocomplete('map').getZoom()

花了很多时间试图找出如何访问地图对象,这很简单......只是要求它!

答案 1 :(得分:0)

回调内部this指的是触发事件的对象。

当我假设第一个监听器绑定的对象是google.maps.Map - 实例时,这应该有效:

var ZoomLevel = 14; // as a Default value

google.maps.event.addListener(this.map, 'zoom_changed', function(ee) {
    google.maps.event.addListenerOnce(this, 'bounds_changed', function(e) {
        ZoomLevel = this.getZoom();
    });
});

但是当缩放更改时,边界也会改变,因此您可以删除内部侦听器:

google.maps.event.addListener(this.map, 'zoom_changed', function(ee) {
        ZoomLevel = this.getZoom();
});