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吗?
答案 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。