由於某些原因,當我使用[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中?如果需要,我可以發佈更多的代碼。謝謝!
完美,不能相信我錯過了 - 謝謝! –
太棒了,儘管克雷格對「缺失的物品」提出了一個很好的觀點。如果lats [iii]爲0,那麼您沒有設置點數[iii],從而導致地圖視圖將不喜歡並且崩潰或者折線看起來錯誤的垃圾值留下點[iii]。看看爲什麼lats [iii]是0開頭的和/或根本不包括它們在points數組中。我認爲Craig提出的建議是,使用NSMutableArray將該過程更容易,然後將結果傳輸到C數組。 (順便說一下,零緯度和經度是一個完全有效和真實的位置。) – Anna
我知道0經度0長位置是一個有效的位置,但它不會完全接收信元接收。我同意,我認爲當數據存儲在第一位時,只應存儲非零緯度和經度。 –