谷歌地图覆盖在缩放时闪烁



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

以下是一个带有GroundOverlay的Fiddle:https://jsfiddle.net/sylvanR/a8z0yyeq/17/

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

有办法解决这个问题吗?或者有没有一种方法可以完美地排列UsgsOverlay像素,因为它不会闪烁?

也许有一种方法可以使用与GroundOverlay完全相同的点,用4个点代替这两个点:

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吗?

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

我没有修复缩放时的闪烁,因为我使用了Usgs覆盖,上面的链接非常方便,可以完美地放置地图像素。

根据这个问题,GroundOverlay中闪烁的原因可能是addGroundOverflow(GroundOverlayOptions)方法立即返回,并且不等待位图加载到内存中。

这里的解决方案是使用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));

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

有关更多信息,您也可以查看此项。

最新更新