2016-06-10 88 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; 
} 
相關問題