首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapOverlay draw()方法优化

MapOverlay draw()方法优化
EN

Stack Overflow用户
提问于 2011-09-26 22:10:25
回答 1查看 802关注 0票数 1

这是我的draw方法。我有755条道路,每条道路上有大约10个坐标。所以我需要两个for循环来绘制路径。它跑得太慢了。任何关于优化这段代码的帮助。也许我不需要创建一些对象。

代码语言:javascript
复制
    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方法中没有任何计算。他们只是得到了一些预定义的变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-26 22:22:34

我建议在onDraw()方法之外创建Paths,而不是每次调用它时(可能会被调用数百次)。数据似乎不会在每次调用之间发生变化。在获得数据时创建它们,并将它们保存在某种集合中。然后在onDraw()中绘制它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7556376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档