【发布时间】:2015-07-08 04:54:26
【问题描述】:
我目前正在学习制作一个使用谷歌地图向用户显示数据的安卓应用。目前我正在使用折线画出我想在地图上显示的所有“数据/线”,但我直接在谷歌地图上绘制它,比如 mMap.addPolyline(...)。 (我希望我可以发布截图,但我没有至少 10 个声望 :-( )。
但是我在地图上绘制所有这些线时遇到了一些性能问题,因为它们在那里的一个小区域内由大约 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);
}
}
【问题讨论】:
标签: android google-maps