Добавьте два MKPolylineView

у меня возникли проблемы с добавлением двух разных MKPolylineView с разными цветами в MKOverlayView. Любые идеи о том, как этого добиться? Спасибо

Вот мой код:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKOverlayView* overlayView = nil;
UIColor *mycolor;

self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:self.routeLine] autorelease];

mycolor = [UIColor colorWithRed:85.0/255.0 green:133.0/255.0 blue:255.0/255.0 alpha:0.6];
self.routeLineView.fillColor = mycolor;
self.routeLineView.strokeColor = mycolor;
self.routeLineView.lineWidth = 15;
[overlayView addSubview:self.routeLineView];

self.routeLineView2 = [[[MKPolylineView alloc] initWithPolyline:self.routeLine2] autorelease];
mycolor = [UIColor colorWithRed:85.0/255.0 green:19.0/255.0 blue:25.0/255.0 alpha:0.6];
self.routeLineView2.fillColor = mycolor;
self.routeLineView2.strokeColor = mycolor;
self.routeLineView2.lineWidth = 15;
[overlayView addSubview:self.routeLineView2];   

return overlayView;
}

person pochimen    schedule 02.06.2012    source источник


Ответы (1)


Метод viewForOverlay будет вызываться отдельно для каждого наложения, которое вы добавляете на карту. Таким образом, в этом методе вы возвращаете только представление оверлея для того оверлея, для которого оно в данный момент вызывается (т. е. параметр overlay).

Проверьте, для какого наложения запрашивается представление, и создайте и верните представление только для этого наложения.

Например:

if (overlay == self.routeLine)
{
    //create and return overlay view for routeLine...
    //set color, etc...
    return self.routeLineView;
}
else
if (overlay == self.routeLine2)
{
    //create and return overlay view for routeLine2...
    //set color, etc...
    return self.routeLineView2;
}

return nil;

Не делай ничего addSubview. Просто создайте вид наложения и верните его.

person Community    schedule 03.06.2012