1

[mapView addOverlay:] を使用すると、何らかの理由で何も起こりません。

コード:

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");

このコードの大部分は、データにアクセスして使用可能な座標に変換するだけです。私の質問は (NSLogs のために座標が有効であることを知っているため)、 addOverlay: が呼び出されたときに mapView に何も追加されないのはなぜですか? 必要に応じて、さらにコードを投稿できます。ありがとう!

4

2 に答える 2

2

このpolylineWithPoints:count:メソッドは、構造体の C 配列を取りますMKMapPoint

anは a (緯度、経度)MKMapPointと同じではありません。緯度と経度の値を使用して構造体をCLLocationCoordinate2D作成しています。そのようなは、予期された場所にありません。MKMapPointMKMapPointMakeMKMapPoint

を使用して緯度/経度座標からMKMapPointForCoordinateを作成するMKMapPointか、おそらくより簡単に、構造体の C 配列を作成して代わりにCLLocationCoordinate2D呼び出しpolylineWithCoordinates:count:ます。

于 2011-10-19T02:56:48.953 に答える
0

あなたの「サイズ」が間違っているのでしょうか?ポイント配列には、ソース データが 0 だった場所にもアイテムがありません。

于 2011-10-19T03:00:43.037 に答える