路线我:在地图上放置一条新路线

时间:2015-03-13 21:44:09

标签: ios route-me

我有一个使用Route-me和静态地图的应用程序(存储在sqlite数据库中的切片)。下面的代码正确地添加了到地图的路线。但是,我想让应用删除显示的路线并添加另一条路线。在代码中,函数在此行中获取一组新的路由点(变量pathNodes)([route createRoute:whichRoute]方法从sqlite数据库中提取数据点 - 这可以正常工作):

pathNodes = [route createRoute:whichRoute];

然后我删除此代码中的现有图层:

    // remove the current layer, which holds the previous route
    if (currentLayer != nil) {
        [mapView.contents.overlay removeSublayer:currentLayer];
    }

并在此添加一个新图层:

    [mapView.contents.overlay addSublayer:(CALayer *)walkRoute.path];

对于创建的第一条路线,这非常有效。但是当选择新路线时,现有图层将被删除,新的子图层将添加到mapView中,但永远不会显示。

在我看来,这只是让mapView用新的子图重绘自己的问题,但我已经尝试了我能想到的或在其他地方发现的一切,但没有任何效果。

如何让mapView重绘自己。还是我还没有看到另一个问题?

非常感谢所有帮助!

- (void) setRoute {
    NSMutableArray *pathNodes;

    int whichRoute = delegate.selectedRoute;   // delegate.whichRoute will be an integer denoting which route the user has chosen

    Route *route = [[Route alloc] init];// Route stores information about the route, and a way to create the path nodes from a sqlite database

    pathNodes = [route createRoute:whichRoute];
    CMRoute *walkRoute = [[CMRoute alloc] initWithNodes:pathNodes forMap:mapView];

    // remove the current layer, which holds the previous route
    if (currentLayer != nil) {
        [mapView.contents.overlay removeSublayer:currentLayer];
    }

    [mapView.contents.overlay addSublayer:(CALayer *)walkRoute.path];
    currentLayer = (CALayer *)walkRoute.path;

    // set the map's center point, whkch is the startPointlat and long stored in route
    CLLocationCoordinate2D demoCoordinate;
    demoCoordinate.longitude = route.startPoint.longitude;
    demoCoordinate.latitude =  route.startPoint.latitude;

    [mapView setNeedsDisplay];
    [mapView moveToLatLong:demoCoordinate];
}

1 个答案:

答案 0 :(得分:1)

如果有人还在看这个......

当路线改变时,我从来没有得到RouteMe地图来重绘路线。但是 - 这是一个很大的问题 - iOS 8和9具有执行静态地图和绘制和重新绘制路线所需的所有功能。一切正常。我使用UIMapKit在Swift中重写了整个应用程序,这一切都运行得更好。有人在考虑使用RouteMe - 我建议考虑做两次,三次和四次。 RouteMe没有得到维护,在一些关键领域只是简单的错误。 (我查看了源代码一次,看看到底发生了什么,并发现评论说类中有一些遗留代码,没有人能够弄清楚它为什么存在,但如果删除了,就打破了这个类。)

UIMapKit - 这就是答案。