2012-11-14 56 views
0

你好我使用這種方法來獲取座標和銷添加到地圖視圖一個職位代碼CLGeocoder前進地理編碼倍數位置

-(void)myMapview 
{ 
    //sitePC is an Array with the Post code location 
    NSString *addressString = [self.sitePC valueForKey:@"sitePC"]; 

    CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 

    [geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *anError) 

    { for(CLPlacemark *placemark in placemarks) { 
      NSLog(@"Placemark: %@",placemark); 

      MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; 

      pa.coordinate = placemark.location.coordinate; 
      pa.title = [self.sitePC valueForKey:@"siteName"]; 
      [self.mapview addAnnotation:pa]; 

     }   if(anError) 
     { NSLog(@"Error: %@",[anError description]); }   
    }]; 
} 

但現在sitePC陣列持有10級後的代碼來處理,我讀CLGeocoder的文檔,我知道我只能發送一個請求。

我的問題是我如何只發送一個請求在每個郵政編碼?

回答

1

您可以爲註釋創建數組並在MapView上添加該註記數組。希望在代碼中進行更改可以幫助你。

NSString * addressString = [self.sitePC valueForKey:@「sitePC」];

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 

[geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *anError) 

{ 
    NSMutableArray *pointsArray = [[NSMutableArray alloc]init] 
    for(CLPlacemark *placemark in placemarks) { 
     NSLog(@"Placemark: %@",placemark); 

     MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; 

     pa.coordinate = placemark.location.coordinate; 
     pa.title = [self.sitePC valueForKey:@"siteName"]; 
     [pointsArray addObject:pa]; 
    } 
    [self.mapview addAnnotations:pointsArray]; 
    if(anError) 
    { NSLog(@"Error: %@",[anError description]); }   
}]; 
+0

我得到一個錯誤 - 2012年11月14日12:38:57.987 SRMIpadTest2 [32594:3c03] - [__ NSArrayI長度]:無法識別的選擇發送到實例0x8912000 2012年11月14日12:38:57.988 SRMIpadTest2 [32594:3c03] ***一旦地理編碼器被調用,由於未捕獲的異常終止應用程序。 – HernandoZ

+0

一旦檢查虛擬地址說NSString * addressString = @「1 Infinite Loop,Cupertino,CA」並註釋此行pa.title = [self.sitePC valueForKey:@「siteName」];然後運行..讓我知道它是否仍然崩潰。 – indu

相關問題