何らかの理由で[mapView addOverlay:]を使用しても何も起こりません。[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に何も追加されないのはなぜですか?必要に応じてさらにコードを投稿することができます。ありがとう!
完璧、私はそれを逃したと信じられない - ありがとう! –
偉大な、クレイグは "欠けているアイテム"について良い点を作っている。ラッツ[iii]が0の場合はポイントを設定しません。[iii]マップビューが気に入らずクラッシュしたり、ポリラインが正しく表示されないゴミ値でポイント[iii]を残しています。なぜラット[iii]が0から始まっているのか、それらをポイント配列にまったく含まないのかを調べてみましょう。私はCraigが示唆していることは、そのプロセスはNSMutableArrayでより簡単になり、その結果をC配列に転送することだと思います。 (ちなみに、ゼロ緯度と経度は完全に有効で実際の場所です) – Anna
私は、0緯度0の長い場所が有効な場所であることを知っていますが、正確にはセルの受信を受け取っていません。私は同意する、私は、データが最初に格納されるとき、ゼロ以外の緯度と経度だけが格納されるべきだと思う。 –