1

このループで mkMapView にいくつかの注釈を追加しようとしています:

for (PFObject *fetchedCompany in companyArray)
{
       Store *store = [[Store alloc] initWithObject:fetchedCompany];
       [self loadStore:store];
       [store release];
}

- (void) loadStore:(Store *) store {
    CLLocationCoordinate2D location = [self getLocationFromAddressString:store.address];
    MapViewAnnotation *mapAnnotation = [[MapViewAnnotation alloc] initWithTitle:store.name coordinate:location];
    [self.indexMapView addAnnotation:mapAnnotation];
}

これは、Google API を使用して住所を場所に変換する getLocationFromAddressString メソッドです。

-(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;
}

場所を 1 つだけ送信すると、常に完全に機能しますが、ループに注釈を追加すると、一部の場所が認識されず、NSLog からエラーが発生することがあります。

Address, Vallgatan 3 GÖTEBORG not found: Error 620

問題は、ループなしでそれらを試したときにアドレスが機能したため、アドレスについてかなり確信があるということです。どうすれば問題を解決できるか知っていますか?

4

1 に答える 1

0

送信したクエリが多すぎて、リクエストが拒否されました。GeocodingAPIV2のドキュメントを参照してください。

620:    G_GEO_TOO_MANY_QUERIES

「指定されたキーが24時間以内にリクエストの制限を超えたか、短すぎる期間に送信したリクエストが多すぎます。複数のリクエストを並行して、またはタイトなループで送信する場合は、タイマーを使用するか、一時停止してくださいリクエストをあまりにも早く送信しないようにするためのコード」

于 2012-11-20T20:40:57.833 に答える