1

MKMapViewにアドレスを読み込もうとしたので、次のコードを使用しました

CLLocationCoordinate2D location = [self getLocationFromAddressString:@"321 Iowa St, Fallbrook, CA 92028, United States US"];
MKCoordinateRegion region;
MKCoordinateSpan span;

span.latitudeDelta = 0.05;
span.longitudeDelta = 0.05;

region.span = span;
region.center = location;

[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];

以下は、指定されたアドレスの場所を取得するためのコードです

-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) addressStr 
{
NSString *urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                    [addressStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSString *locationStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlStr] encoding:NSUTF8StringEncoding error:&error];
NSArray *items = [locationStr componentsSeparatedByString:@","];

double lat = 0.0;
double lon = 0.0;

if([items count] >= 4 && [[items objectAtIndex:0] isEqualToString:@"200"]) {
    lat = [[items objectAtIndex:2] doubleValue];
    lon = [[items objectAtIndex:3] doubleValue];
}
else {
    NSLog(@"Address, %@ not found: Error %@",addressStr, [items objectAtIndex:0]);
}
CLLocationCoordinate2D location;
location.latitude = lat;
location.longitude = lon;

return location;
}

しかし、それは戻ります、

Address, 321 Iowa St, Fallbrook, CA 92028, United States US not found: Error 610

なぜこのエラーが発生したのですか?

4

3 に答える 3

6

これを試して ::

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
   double latitude = 0.0;
   double longitude = 0.0;

   NSString *esc_addr =  [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
   NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];

   NSDictionary *googleResponse = [[NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL] JSONValue];

   NSDictionary    *resultsDict = [googleResponse valueForKey:  @"results"];   // get the results dictionary
   NSDictionary   *geometryDict = [resultsDict valueForKey: @"geometry"];   // geometry dictionary within the  results dictionary
   NSDictionary   *locationDict = [geometryDict valueForKey: @"location"];   // location dictionary within the geometry dictionary

   NSArray *latArray = [locationDict valueForKey: @"lat"];
   NSString *latString = [latArray lastObject];     // (one element) array entries provided by the json parser

   NSArray *lngArray = [locationDict valueForKey: @"lng"];
   NSString *lngString = [lngArray lastObject];     // (one element) array entries provided by the json parser

   CLLocationCoordinate2D location;
   location.latitude = [latString doubleValue];// latitude;
   location.longitude = [lngString doubleValue]; //longitude;

   return location;
}

以前に同じ問題を見つけました。

Google API サービスに問題がある可能性があります。

うまくいけば、それはあなたへのhtlpになります。

ありがとう。

于 2013-03-19T11:16:42.873 に答える
1

ドキュメントによると

G_GEO_BAD_KEY = 610 指定されたキーが無効であるか、指定されたドメインと一致しません。

于 2013-03-19T11:15:31.730 に答える
1

GoogleのジオコーディングAPIドキュメントからわかることから

APIを間違った方法で呼び出しているということです。API の呼び出しは次のようになります。

http://maps.googleapis.com/maps/api/geocode/json?address=321%20Iowa%20St,%20Fallbrook,%20CA%2092028,%20United%20States%20US
于 2013-03-19T11:16:40.027 に答える