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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top