0

我对在MapFragment.

我应该将它们绘制在单独的图层中,比如TileOverlayor GroundOverlay,有可能吗?我想取得好的表现,尽可能好。现在我有一个地图片段,我使用Volley库从外部服务器接收一些数据,并AsyncTask在循环中分别绘制每条折线。我应该用AsyncTask这个吗?Volley我想请求异步工作,但是在成功侦听器调用的回调中,我调用绘制折线,这在同一个线程中工作,主要活动是什么,所以我把它放到AsyncTask.

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

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

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

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

你怎么看?

4

1 回答 1

2

我认为您可能需要重新考虑您的设计选择。

如果您添加 500 条线以在手机等小屏幕上显示它们,您将看不到地图。

如果它们中的大多数都在屏幕之外,那么在用户滚动到那里之前不要添加它们。只需计算每个PolylineLatLngBounds并且仅在与 相交时添加它们getProjection().getVisibleRegion().latLngBounds

使用时不要使用AsyncTasks VolleyGoogleMap必须在 UI 线程上调用's 和其他 API v2 对象函数。

于 2013-08-24T14:38:27.763 回答