这是我的绘制方法。我在每条路上有755条道路和大约10个坐标。所以我需要两个for循环来绘制路径。它运行得太慢了。有关优化此代码的任何帮助。也许我不必创建一些对象。
Projection projection = mv.getProjection();
roadList = getRoadList();
int length = roadList.length;
for (int i = 0; i < length; i++) {
Coordinate[] coordinateList = roadList[i].getCoordinateList();
int numberOfCoordinates = coordinateList.length;
Path path = new Path();
for (int j = 0; j < numberOfCoordinates - 1; j++) {
Coordinate coordinateFrom = coordinateList[j];
Coordinate coordinateTo = coordinateList[j + 1];
GeoPoint geoPointFrom = coordinateFrom.getGeoPoint();
GeoPoint geoPointTo = coordinateTo.getGeoPoint();
Point pointFrom = new Point();
Point pointTo = new Point();
projection.toPixels(geoPointFrom, pointFrom);
projection.toPixels(geoPointTo, pointTo);
path.moveTo(pointFrom.x, pointFrom.y);
path.lineTo(pointTo.x, pointTo.y);
if (!canvas.quickReject(path, EdgeType.BW)) {
if (j == numberOfCoordinates - 2) {
canvas.drawPath(path, paint);
}
}
}
}
在get方法中没有任何计算。他们只是得到了一些预定义的变量。
答案 0 :(得分:0)
我建议在Paths
方法之外创建onDraw()
,而不是每次调用它(可能是数百次)。呼叫之间的数据似乎没有变化。在获取数据时创建它们并将它们保存在某种集合中。然后在onDraw()
中绘制它们。