1
場所のタイトルと住所を取得し、次にGoogleマップ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];
}
私は 'stringWithContentsOfURL'メソッドは同期であり、それが終了するまでUIをブロックします – 1337code
アプリと負荷50の注釈を開こうとすると今はクラッシュします。ループ内でこのメソッドを呼び出す場合、UIは長時間ブロックされます。ここにはいくつかの代替案があります:http://stackoverflow.com/questions/5850930/speed-up-addannotations-from-google-geocoding and http://stackoverflow.com/questions/7634246/for-loop-with- google-geocoding-high-error-rate-iphone – Anna