2016-06-10 97 views
0

我有一个自定义地图,它们与属于同一位置的标记相匹配,但是当我放大标记或地图有点偏移时。现在我使用overlayview作为标记,该类位于文件google-maps-types.ts那里,我设置标记的中心点。所以我真正想要的是获得当前的缩放以制作if语句,以每个缩放更改中心点。Angular 2获取地图的当前缩放级别

这是一个PLUNKER,所以基本上我想要的是在google-map-types.ts中获取当前缩放级别,以便我可以访问并更改标记点。反之亦然,在指令/ google-map.ts中获取标记的位置。

但我不认为多数民众赞成这样做的正确的方法,我想更新时,变焦改变了它的位置(移一点点了)..

,你这个图片看到缩放级别为18该标记是一点点转移:enter image description here

我已经尝试在谷歌地图类型,但我真的不想在课堂OverlayViewBla进行编辑:

this.overlayView.getZoom = function() { 
    console.log(this._mapsWrapper); 

    google.maps.event.addDomListener(this._mapsWrapper,'zoom_changed', function(event: any) { 
    google.maps.event.trigger(this._mapsWrapper, "zoom_changed"); 
    console.log(this._mapsWrapper); 
    var zoom = this._mapsWrapper.getZoom(); 
    console.log(zoom); 
    }); 
} 

这是顺便说一句不工作。 或者只需将... px添加到覆盖图的顶部位置,那就是我想要在google-map.ts中执行的操作什么是好选择?

如果有人可以帮我解决这个问题,你会帮助我很多!

回答

2

google.maps.OverlayView支持功能getMap(),如documentation所示。因此,从overlayView对象中获取缩放级别应该如此简单:

this.overlayView.getZoom = function() { 
    var my_map = this.overlayView.getMap(); 
    if(my_map){ //sometimes, the map might not be set yet, it gets set only after you add the overlay to map 
     return my_map.getZoom(); 
    } 
    return null; 
}