Angular 2获取当前缩放级别的地图

时间:2016-06-10 07:19:19

标签: google-maps typescript angular

我有一个自定义地图,它匹配它们所属的完全相同位置上的标记,但是当我放大标记或地图有点偏移时。现在我使用overlayview作为标记,该类位于文件google-maps-types.ts中,我设置标记的中心点。所以我真正想要的是获得当前缩放以产生if语句,以便在每次缩放时改变中心点。

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

但我不认为这是一种正确的方法,我想在缩放变化时更新其位置(稍微向上移动)。

正如您在缩放级别18处看到此图像时标记略微偏移:enter image description here

我在google-map-types中尝试过但我真的不想在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中做什么有什么好的选择?

如果有人能帮助我,你会帮助我很多!!

1 个答案:

答案 0 :(得分: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;
}