Peeter Vedic
Peeter Vedic

Reputation: 101

How to overlay MKPolyline on top of different maps

So I draw a MKPolyline with the users updated CLLocationCoordinates as per usual. When my quits and starts again, all of the past points are loaded onto the mapview to be displayed with

routeLine = [MKPolyline polylineWithCoordinates:clCoordinates count:numberOfSteps];
    [_mapView addOverlay:routeLine];

and in MKOverlayRenderer method I have

if ([overlay isKindOfClass:[MKPolyline class]])
{
    MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay];



    renderer.strokeColor = [[UIColor whiteColor] colorWithAlphaComponent:0.7];
    renderer.lineWidth   = 3;

    return renderer;
}

This all works a treat, but problems arise when I change the type of map with

[self resetMapViewAndRasterOverlayDefaults];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    _rasterOverlay = [[MBXRasterTileOverlay alloc] initWithMapID:@"jonobolitho.j834jdml"];
    _rasterOverlay.delegate = self;
    [_mapView addOverlay:_rasterOverlay];

Note, I have the resetMapViewAndRasterOverlayDefaults helper method

// Reset the MKMapView to some reasonable defaults.
//
_mapView.mapType = MKMapTypeStandard;
_mapView.zoomEnabled = YES;

[_mapView removeAnnotations:_rasterOverlay.markers];
[_mapView removeOverlay:_rasterOverlay];
[_rasterOverlay invalidateAndCancel];

I am using MBXMapKit to display the maps. The maps display correctly, but the polyline isn't shown on top of the map. The map just loads over the top of my polyline (routeLine). I know this because in between the tiles of the new map I can see the routeLine underneath.

So basically is there a way to load the MKPolyline but always keep it on the top layer of the map, even if it changes?

Upvotes: 1

Views: 374

Answers (1)

incanus
incanus

Reputation: 5128

Instead of:

[_mapView addOverlay:_rasterOverlay];

You want:

[_mapView insertOverlay:_rasterOverlay belowOverlay:routeLine];

Or something similar. Overlays have an order.

Upvotes: 0

Related Questions