我从Web服务获取82个地址,并且正在使用正向地址解析器。现在,如何在mapview上一次显示所有82个地址。我将代码放入for循环中,但抛出错误“对该API密钥进行了太多查询”。有什么方法可以发送所有地址并获取所有地址的位置吗?
这是我在for循环中的代码...

 NSMutableDictionary *dictLoc = [[self.arrObjects objectAtIndex:indexValue]valueForKey:@"object_location"];

    NSString *searchString = [NSString stringWithFormat:@"%@,%@,%@,%@",[dictLoc valueForKey:@"object_location_number"],[dictLoc valueForKey:@"object_location_street"],[dictLoc valueForKey:@"object_location_city"],[dictLoc valueForKey:@"object_location_zip"]];

    //        if (self.forwardGeocoder == nil) {
    BSForwardGeocoder *forwardGeocoder = [[[BSForwardGeocoder alloc] initWithDelegate:self] autorelease];
    //        }

    CLLocationCoordinate2D southwest, northeast;
    southwest.latitude = 34.172684;
    southwest.longitude = -118.604794;
    northeast.latitude = 34.236144;
    northeast.longitude = -118.500938;
    BSForwardGeocoderCoordinateBounds *bounds = [BSForwardGeocoderCoordinateBounds boundsWithSouthWest:southwest northEast:northeast];

    // Forward geocode!
#if NS_BLOCKS_AVAILABLE
    [forwardGeocoder forwardGeocodeWithQuery:searchString regionBiasing:nil viewportBiasing:bounds success:^(NSArray *results) {
        [self forwardGeocodingDidSucceed:forwardGeocoder withResults:results withIndexValue:indexValue];
    } failure:^(int status, NSString *errorMessage) {
        if (status == G_GEO_NETWORK_ERROR) {
            [self forwardGeocoderConnectionDidFail:forwardGeocoder withErrorMessage:errorMessage];
        }
        else {
            [self forwardGeocodingDidFail:forwardGeocoder withErrorCode:status andErrorMessage:errorMessage];
        }
    }];
#else
    [self.forwardGeocoder forwardGeocodeWithQuery:searchString regionBiasing:nil viewportBiasing:nil];
#endif

提前致谢.. :)

最佳答案

我将代码放入for循环中,但抛出错误“太多
已对此API密钥进行了查询。”有没有办法发送所有
地址并获取所有地址的位置??

否。此错误表示您正在使用的API限制了您可以进行的查询数量。摆脱该错误并显示所有“82”引脚的唯一方法是与API开发人员联系,以了解如何增加在给定条件下可以对API进行查询的次数大体时间。很有可能这是一项优质服务,您可能需要为此付费。

现在,一个更好的解决方案是永远不要在 map 上显示82个图钉,更像5/10这样对用户更友好。而且很有可能您的API允许每分钟10次查询或类似的查询。

一个更酷的解决方案是建立一个查询队列,该查询队列仅允许您的代码像10个查询一样进行调用,然后将其他查询排队。然后,在分配的时间之后,它又进行了10个查询。

关于iphone - 一次在 map 上掉下82个图钉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14954768/

10-12 13:10