我试图制作我自己版本的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
方法生成的叠加层的非常大的left
和draw
值有关。
如果我手动强制这些值变小或强制通过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上看过这个,但是还没有机会在其他浏览器中测试它。