chiamando [MapView addOverlay:] non ha alcun effetto
Domanda
Per qualche ragione, quando uso [MapView addOverlay:], non succede niente
.Codice:
NSData* dataLat = [[NSUserDefaults standardUserDefaults] objectForKey:@"latKey"];
NSArray* overlayLat = [NSKeyedUnarchiver unarchiveObjectWithData:dataLat];
double lats[overlayLat.count];
NSData* dataLong = [[NSUserDefaults standardUserDefaults] objectForKey:@"longKey"];
NSArray* overlayLong = [NSKeyedUnarchiver unarchiveObjectWithData:dataLong];
double longs[overlayLong.count];
for(int iii = 0; iii < overlayLat.count; iii++)
{
NSNumber* a = (NSNumber*)[overlayLat objectAtIndex:iii];
lats[iii] = [a doubleValue];
}
for(int iii = 0; iii < overlayLong.count; iii++)
{
NSNumber* a = (NSNumber*)[overlayLong objectAtIndex:iii];
longs[iii] = [a doubleValue];
}
int size = (sizeof(lats) / sizeof(lats[0]));
NSLog(@"%d", size);
MKMapPoint points[size];
for(int iii = 0; iii < overlayLong.count; iii++)
{
MKMapPoint point = MKMapPointMake(lats[iii], longs[iii]);
if(lats[iii] != 0)
points[iii] = point;
}
for(int iii = 0; iii < 15; iii++)
{
NSLog(@"Lat (x):%f", points[iii].x);
NSLog(@"Long (y):%f", points[iii].y);
}
MKPolyline* line = [MKPolyline polylineWithPoints:points count:size];
[mapView addOverlay:line];
NSLog(@"finished");
La maggior parte di questo codice appena accede ai dati e lo trasforma in coordinate utilizzabili. La mia domanda è (perché so che le coordinate sono validi a causa delle NSLogs), perché non nulla vengono aggiunti alla MapView quando addOverlay: si chiama? Posso postare più di codice in caso di necessità. Grazie!
Soluzione
Il metodo polylineWithPoints:count:
prende una matrice C di struct MKMapPoint
.
Un MKMapPoint
non è la stessa di un CLLocationCoordinate2D
(latitudine, longitudine). Si sta creando le strutture MKMapPoint
utilizzando MKMapPointMake
ma dandogli latitudine e longitudine valori. Tale MKMapPoint
non è nella posizione prevista.
O uso MKMapPointForCoordinate
per creare un MKMapPoint
da lat lunghi coordinate / o, probabilmente più facile, creare una matrice C di struct CLLocationCoordinate2D
e chiamata polylineWithCoordinates:count:
invece.
Altri suggerimenti
Potrebbe essere il tuo 'size' è che non va? Il tuo punti serie avrà anche oggetti mancanti ovunque i dati di origine aveva 0. mi piacerebbe andare con un NSMutableArray e aggiungere elementi a che se ritenuti validi, poi contare che alla fine e passarlo al polylineWithPoints.