这是我的draw方法。我有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方法中没有任何计算。他们只是得到了一些预定义的变量。
发布于 2011-09-26 22:22:34
我建议在onDraw()方法之外创建Paths,而不是每次调用它时(可能会被调用数百次)。数据似乎不会在每次调用之间发生变化。在获得数据时创建它们,并将它们保存在某种集合中。然后在onDraw()中绘制它们。
https://stackoverflow.com/questions/7556376
复制相似问题