自定义OverlayView在高变焦时导致问题

时间:2015-09-28 18:20:20

标签: google-maps google-maps-api-3

我试图制作我自己版本的richMarker谷歌地图叠加层。 (https://github.com/googlemaps/js-rich-marker)。

我有一个工作叠加层在地图上显示并且行为正常,除非地图缩放到某个级别> = 19.当地图缩放到该级别时,我的叠加层消失,谷歌地图控件也开始闪烁当地图被淘汰时进出。缩小回到水平< 19带回正常的地图行为。

现在我已经看到了这个问题(Google Maps overlay disappears at certain zoom level),说明我要做的就是添加这一行,一切都会奏效。

div.style.webkitTransform = 'translateZ(0px)';

但那不适合我。 (它出现在下面的jsFiddle中)

我已经缩小了这个问题,与top方法生成的叠加层的非常大的leftdraw值有关。

Marker issue

如果我手动强制这些值变小或强制通过display = none或visibility = collapse隐藏标记,则地图行为正确。

以下是生成这些值的代码:

    var latLng = this.get('position');
    var pos = projection.fromLatLngToDivPixel(latLng);

    var offset = this.getOffset_();
    this.markerWrapper_.style['top'] = (pos.y + offset.height) + 'px';
    this.markerWrapper_.style['left'] = (pos.x + offset.width) + 'px';

据我所知,这是在地图上放置叠加层的推荐方式,因为在谷歌地图API参考页面上的多个示例中使用了这个确切的块。 (https://developers.google.com/maps/documentation/javascript/examples/overlay-hideshow

我尝试创建一个检查地图边界的叠加层,然后隐藏超出范围的标记,但是当用户平移地图时,不会调用draw()方法。

还有其他人遇到过这个问题吗?

这是一个显示问题的JSFiddle。只需以非常低的缩放级别玩地图,你就会发现它开始变得不稳定。 https://jsfiddle.net/ten5d3y8/2/

仅供参考我在Chrome和Safari上看过这个,但是还没有机会在其他浏览器中测试它。

0 个答案:

没有答案