缩放时,Google地图叠加层会闪烁

时间:2016-04-05 14:12:19

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

google maps api有人遇到同样的问题吗?我正在使用GroundOverlay而不是UsgsOverlay,因为UsgsOverlay与原始谷歌地图不是像素完美。但是在缩放时,GroundOverlay会闪烁(渲染)。

这是一个关于GroundOverlay的小提琴: https://jsfiddle.net/sylvanR/a8z0yyeq/17/

正如您在放大或缩小时所看到的那样,每次都会渲染。

有没有办法解决这个问题?或者有没有办法完美排列UsgsOverlay像素,因为这不是闪烁?

也许有一种方法可以使用与GroundOverlay完全相同的点,而不是这两点:

var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());

UsgsOverlay使用NE和SW,但它没有完美排列。有人可以帮我这么做吗?

这是UsgsOverlay的小提琴: https://jsfiddle.net/sylvanR/a8z0yyeq/18/

有人可以帮助我修复闪烁或放置UsgsOverlay吗?

2 个答案:

答案 0 :(得分:0)

我找到了一个方便的工具:https://gist.github.com/pacofvf/7324239

我没有修复变焦时的闪烁,因为我使用了Usgs叠加层,上面的链接非常方便地将地图像素完美地放置。

答案 1 :(得分:0)

根据这个issue,GroundOverlay中闪烁的原因可能是addGroundOverlay(GroundOverlayOptions)方法立即返回,并且不会等待将Bitmap加载到内存中。

此处的解决方案是使用setImage()方法将现有图像替换为具有相同方向的其他图像。

使用GroundOverlay.setImage(BitmapDescriptor)方法将地面叠加图像添加到地图后,您可以更改地面叠加图像。

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

对于Custom overlay的放置,首先将实例化实例化并准备显示,您需要通过浏览器的DOM将其附加到地图上。 API表示已通过调用叠加层onAdd()方法将叠加层添加到地图中。要处理此方法,您需要创建<div>来保存图片,添加<img>元素,将其附加到<div>,然后将叠加层附加到其中一个地图上窗格。窗格是DOM树中的节点。您可以调整与叠加层构造函数中指定的边界匹配的图像的大小。您可以使用<div>更改它。

有关详细信息,您还可以查看this

相关问题