【问题标题】:Google maps overlay is flickering while zooming谷歌地图覆盖在缩放时闪烁
【发布时间】:2016-04-05 14:12:19
【问题描述】:

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

这是一个使用 GroundOverlay 的小提琴: 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 的问题吗?

【问题讨论】:

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


    【解决方案1】:

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

    我没有修复缩放时的闪烁问题,因为我使用了 Usgs 叠加层,并且上面的链接非常方便地使您的地图像素完美。

    【讨论】:

      【解决方案2】:

      根据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

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 2019-03-20
        • 2015-08-28
        • 1970-01-01
        • 2020-05-21
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多