我目前正在学习制作一个使用Google地图向用户显示数据的Android应用。目前我正在使用Polyline绘制出想要在地图上显示的所有“数据/线条”,但我直接在Google Map上绘制它,例如mMap.addPolyline(...)。 (我希望我可以张贴屏幕截图,但我至少没有10个声望:-()如何高效地在Google地图中绘制多条折线?
但是我在绘制地图上的所有这些行时遇到了一些性能问题,因为它们由500〜 900线在一个小地方(通过放大)。问题是,当应用程序正在绘制所有这些数据,应用程序挂起/停止一秒钟,就像冻结,然后一旦完成绘图,应用程序继续工作
所以我的问题是,如何在绘制地图时,让应用程序在一秒钟内不会挂起/停止,从而平滑地绘制多条多段线?例如,用户可以在地图上移动,而多段线被绘制在地图上?
我试图在不同的线程在地图上绘制多段线,但是我得到了一个类似于必须在主线程上绘制的错误(不记得确切的异常错误)。除此之外,我还在互联网上搜索了这样的例子,但我只找到Overlay或ItemizedOverlay的例子,但据我所知,这些例子已被弃用。还有其他的选择吗?你能向我展示一些例子或指导我选择正确的资源吗?给我看一些代码会很有帮助。
谢谢
更新: 忘记,包括在这里我的代码,这里是我画折线代码:
private class LoadDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// Show a message saying this app is fetching data
Toast.makeText(mMainActivity,
"Fetching data ...",
Toast.LENGTH_SHORT)
.show();
}
@Override
protected Void doInBackground(String... urls) {
// Load then read the data from a url in the background
loadData();
readData();
return null;
}
@Override
protected void onPostExecute(Void unused) {
// draw lines here
PolylineOptions lineOptions = new PolylineOptions()
.add(new LatLng(locations[0].getLatitude(), locations[0].getLongitude()))
.add(new LatLng(locations[1].getLatitude(), locations[1].getLongitude()))
.color(Color.GREEN)
.width(5f);
Polyline polyline = mMap.addPolyline(lineOptions);
lineList.add(polyline);
}
}
是不是说仍然会导致应用程序/地图在绘制所有行时停止响应一会儿? – khai
是的,这肯定需要时间,但它不会挂你的用户界面,用户会知道一些工作正在进行。 – jyomin