2016-06-10 5 views
0

У меня есть пользовательская карта, которая соответствует маркерам в том же месте, где они находятся, но когда я увеличиваю маркеры или карта немного сдвинута. Теперь я использую overlayview в качестве маркера, класс которого находится в файле google-maps-types.ts, где я установил центральную точку маркера. Так что я действительно хочу, чтобы получить текущий масштаб, чтобы сделать оператор if, чтобы изменить центральную точку с каждым увеличением.Угловой 2 получить текущий уровень масштабирования карты

Вот PLUNKER, так что в основном я хочу получить текущий уровень масштабирования в google-map-types.ts, чтобы я мог получить это и изменить точку маркера. Или, наоборот, получите позицию маркера в директивах/google-map.ts.

Но я не думаю будет надлежащим образом делать это, я хочу, чтобы обновить свою позицию (Shift немного вверх), когда масштаб меняется ..

, как вы видите на этом изображении на уровне масштабирования 18 маркеры являются немного сдвинуты: enter image description here

то, что я пытался в Google-карте-типов, но я действительно не хочу, чтобы изменить его в классе 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; 
} 
Смежные вопросы