1
这里是我的绘制方法。我在每条道路上有755条道路和约10个坐标。所以我需要两个for循环来绘制路径。它运行速度太慢。任何有关优化此代码的帮助。也许我不需要创建一些对象。MapOverlay draw()方法优化
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方法中没有任何计算。他们只是获得一些预定义的变量。
好的建议。但是,我不需要计算每个平移和缩放事件激发的像素?或者我可以捕捉这些事件并计算像素? –
我在第二个注释掉了所有内容,只是放了一个画线方法。它仍然太慢。 –
嗯....好点。我没有考虑'MapView'。通常,当我这样做时,我会用自定义覆盖项目覆盖'Overlay',或者使用内置的'ItemizedOverlay'和'OverlayItem'并让每个对象确定它的位置。 – DeeV