性能问题在Android Google Maps API v2中绘制PolyLines

时间:2013-08-22 22:28:25

标签: java android google-maps android-volley

我对在MapFragment上绘制折线有一些疑问。

我应该在TileOverlayGroundOverlay这样的单独图层中绘制它们,它有可能吗? 我希望尽可能好地实现良好的性能。现在我有一个地图片段,我使用Volley库接收来自外部服务器的一些数据,并在AsyncTask我在循环中分别绘制每条折线。我应该使用AsyncTask吗?我假设Volley请求异步工作,但是在成功监听器调用的回调中,我调用绘制折线,这在主要活动的同一个线程中工作,所以我把它放到AsyncTask

我有折线数据和方法的列表,其中我在循环中绘制地图上的每条折线:

  mMap.clear();
            for (PolyLineDTO polyLineDTO : currentPolyLines) {
                polyLines.add(drawPolyline(polyLineDTO));
            }

方法drawPolyline(polyLineDTO)只是调用mMap.addPolyline(polylineOptions)

当我在地图上绘制了大约500条折线时,它显然会变慢。

您怎么看?

1 个答案:

答案 0 :(得分:2)

我想您可能想重新考虑您的设计选择。

如果你添加500行在手机屏幕等小屏幕上显示,你将看不到地图。

如果大部分都在屏幕之外,请在用户滚动之前不要添加它们。只需计算每个Polyline的{​​{1}},只有在与LatLngBounds相交时才添加它们。

使用getProjection().getVisibleRegion().latLngBounds时请勿使用AsyncTask。必须在UI线程上调用Volley和其他API v2对象函数。