1
我有代碼需要標題和地址的位置,然後從谷歌地圖CSV獲得座標,然後添加註釋。它可以工作,但是當我想要一次添加50個或更多註釋時,它會凍結大約30-40秒,然後顯示註釋,所以我想知道的是我搞砸了內存管理,這就是爲什麼它很慢或者什麼其他?我可以加快速度嗎?添加多個批註到iPhone MapView很慢
下面是代碼:
- (void) addAnnotation: (NSString*) annoTitle: (NSString*) annoAddress
{
NSString *address = annoAddress;
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSArray *listItems = [locationString componentsSeparatedByString:@","];
float langcoord = [[listItems objectAtIndex:2] floatValue];
float longcoord = [[listItems objectAtIndex:3] floatValue];
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(langcoord, longcoord);
// Create an instance of MapPoint with the current data
Annotation *annotation = [[Annotation alloc] initWithCoordinate:coord title:annoTitle];
// Add it to the map view
[mapView addAnnotation:annotation];
// MKMapView retains its annotations, so we can release it
[annotation release];
}
現在崩潰時,我試圖打開的應用程序和負載50個註解 – 1337code 2012-01-03 10:51:51
的'stringWithContentsOfURL'方法是同步的,直到其完成將阻止用戶界面。如果你在一個循環內調用這個方法,UI將會被阻塞很長時間。這裏只是一些替代方案:http://stackoverflow.com/questions/5850930/speed-up-addannotations-from-google-geocoding和http://stackoverflow.com/questions/7634246/for-loop-with- google-geocoding-high-error-rate-iphone – Anna 2012-01-03 14:45:00