Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图覆盖在缩放时闪烁_Javascript_Google Maps_Google Maps Api 3_Overlay - Fatal编程技术网

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

Javascript 谷歌地图覆盖在缩放时闪烁,javascript,google-maps,google-maps-api-3,overlay,Javascript,Google Maps,Google Maps Api 3,Overlay,有人对谷歌地图api有同样的问题吗?我使用的是GroundOverlay而不是UsgsOverlay,因为UsgsOverlay与原始谷歌地图的像素不完美。但是地面覆盖在缩放时闪烁(渲染) 这是一个地面覆盖的小提琴: 正如您在放大或缩小时所看到的,每次都会渲染它 有办法解决这个问题吗?或者有没有一种方法可以使UsgsOverlay像素完美,因为它不会闪烁 也许有一种方法可以使用与GroundOverlay完全相同的点,即4个点,而不是这两个点: var sw = overlayProjecti

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

这是一个地面覆盖的小提琴:

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

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

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

var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());
UsgsOverlay使用NE和SW,但并没有完美地排列。有人能帮我做这个吗

下面是一个关于UsgsOverlay的小摆设:

有人能帮我修复闪烁或放置UsgsOverlay吗?

我找到了一个方便的工具:

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

根据这一点,GroundOverlay中闪烁的原因可能是addGroundOverlay(GroundOverlay选项)方法立即返回,不等待位图加载到内存中

这里的解决方案是使用将现有图像替换为具有相同方向的另一图像的方法

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

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

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

// 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));