Hi everyone I hope you can help me:
- (IBAction) addPoints: (id) sender
{
NSArray *latitudePoints;
NSArray *longitudePoints;
BOOL flag = NO;
@try
{
switch (lugar)
{
case 0:
break;
case 1:
latitudePoints = @[@27.781361, @27.777894, @27.766683, @27.757066, @27.745613, @27.737327, @27.728247, @27.720827, @27.720866, @27.719083, @27.722266, @27.721097, @27.739263, @27.758177, @27.780688];
longitudePoints = @[@-15.714188, @-15.720175, @-15.726072, @-15.740874, @-15.746066, @-15.759544, @-15.763944, @-15.774408, @-15.764822, @-15.752658, @-15.735975, @-15.715497, @-15.718150, @-15.712244, @-15.713213];
flag = YES;
break;
case 2:
latitudePoints = @[@28.249792, @28.254583, @28.259865, @28.264000, @28.265621, @28.267694, @28.270308, @28.272192, @28.273966, @28.275698, @28.277723, @28.279901];
longitudePoints = @[@-16.841880, @-16.842477, @-16.842657, @-16.844832, @-16.848396, @-16.851215, @-16.852329, @-16.856142, @-16.859281, @-16.860882, @-16.862011, @-16.863116];
flag = YES;
break;
default:
[NSException raise:@"Unknown place" format:@"Unknown place"];
break;
}
// NSLog(@"Lugar %d Flag %d",lugar,flag);
if (flag && [longitudePoints count] == [latitudePoints count])
{
anotacionesMapa *point; // anotacionesMapa is a custom MKAnnotation class, just have title, subtitle and coord atribute
CLLocationCoordinate2D placePoint;
NSMutableArray *pointList = [[NSMutableArray alloc] initWithCapacity:[longitudePoints count]];
for (int c = 0; c < [longitudePoints count]; c++)
{
placePoint.latitude = [[latitudePoints objectAtIndex:c] doubleValue];
placePoint.longitude = [[longitudePoints objectAtIndex:c] doubleValue];
if (c % 2 == 0)
point = [[anotacionesMapa alloc] initWithTitle:[NSString stringWithFormat:@"[Picture here] Nothing"]
subtitle:@""
andCoordinate: placePoint];
else
point = [[anotacionesMapa alloc] initWithTitle:[NSString stringWithFormat:@"Something"]
subtitle:@"[Pic here] test"
andCoordinate: placePoint];
[self.mapView addAnnotation:point];
CLLocation *linePoint = [[CLLocation alloc] initWithLatitude:placePoint.latitude longitude:placePoint.longitude];
[pointList addObject: linePoint];
}
ruta = [[CSMapRouteLayerView alloc] initWithRoute:pointList
mapView:self.mapView];
}
}
@catch (NSException *exception)
{
UIAlertView *alert;
alert = [[UIAlertView alloc] initWithTitle:@"Error..."
message:[NSString stringWithFormat:@"%@", exception]
delegate:self
cancelButtonTitle:@"Aceptar"
otherButtonTitles:nil];
[alert show];
}
}
I have this code, then I need to print lines between that coordinates from PuntosLT and PuntosLG that store latitudes and longitudes, but when it suppouse to print the lines (that lines are printed actually, in blue color, I want to print in red color) the MKMapView get frozen and can't move around and can't zoom, and I think it get bugs and draw other lines that is not in the coords, and finally my custom images in my anotations are red pins again, like default and the information like title, subtitle doesn't work.
Thanks.
EDIT: The Method/Constructor
-(id) initWithRoute:(NSArray*)routePoints mapView:(MKMapView*)mapView
{
self = [super initWithFrame:CGRectMake(0, 0, mapView.frame.size.width, mapView.frame.size.height)];
[self setBackgroundColor:[UIColor clearColor]];
[self setMapView:mapView];
[self setPoints:routePoints];
// determine the extents of the trip points that were passed in, and zoom in to that area.
CLLocationDegrees maxLat = -90;
CLLocationDegrees maxLon = -180;
CLLocationDegrees minLat = 90;
CLLocationDegrees minLon = 180;
for(int idx = 0; idx < self.points.count; idx++)
{
CLLocation* currentLocation = [self.points objectAtIndex:idx];
if(currentLocation.coordinate.latitude > maxLat)
maxLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.latitude < minLat)
minLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.longitude > maxLon)
maxLon = currentLocation.coordinate.longitude;
if(currentLocation.coordinate.longitude < minLon)
minLon = currentLocation.coordinate.longitude;
}
MKCoordinateRegion region;
region.center.latitude = (maxLat + minLat) / 2;
region.center.longitude = (maxLon + minLon) / 2;
region.span.latitudeDelta = maxLat - minLat;
region.span.longitudeDelta = maxLon - minLon;
[self.mapView setRegion:region];
[self.mapView setDelegate:self];
[self.mapView addSubview:self];
return self;
}