我对在MapFragment
上绘制折线有一些疑问。
我应该在TileOverlay
或GroundOverlay
这样的单独图层中绘制它们,它有可能吗?
我希望尽可能好地实现良好的性能。现在我有一个地图片段,我使用Volley
库接收来自外部服务器的一些数据,并在AsyncTask
我在循环中分别绘制每条折线。我应该使用AsyncTask
吗?我假设Volley
请求异步工作,但是在成功监听器调用的回调中,我调用绘制折线,这在主要活动的同一个线程中工作,所以我把它放到AsyncTask
。
我有折线数据和方法的列表,其中我在循环中绘制地图上的每条折线:
mMap.clear();
for (PolyLineDTO polyLineDTO : currentPolyLines) {
polyLines.add(drawPolyline(polyLineDTO));
}
方法drawPolyline(polyLineDTO)
只是调用mMap.addPolyline(polylineOptions)
。
当我在地图上绘制了大约500条折线时,它显然会变慢。
您怎么看?
答案 0 :(得分:2)
我想您可能想重新考虑您的设计选择。
如果你添加500行在手机屏幕等小屏幕上显示,你将看不到地图。
如果大部分都在屏幕之外,请在用户滚动之前不要添加它们。只需计算每个Polyline
的{{1}},只有在与LatLngBounds
相交时才添加它们。
使用getProjection().getVisibleRegion().latLngBounds
时请勿使用AsyncTask
。必须在UI线程上调用Volley
和其他API v2对象函数。