Google Maps iOS SDK:优化查找随机街景

时间:2013-08-13 14:18:00

标签: ios objective-c google-maps google-street-view

此代码根据一个国家纬度/经度的边界框在Google街道地图上找到一个随机位置。但它仍然会以限制盒的方式减慢 - 可能需要一分钟才能找到一张steet视图照片。我能做些什么来加快速度呢?

来自GMSPanoramaView的委派方法会检查随机位置是否有有效的全景照片。如果没有告诉找到新的搜索。

// Delegate method of GMSPanoramaView that get´s called when didMoveToPanorama: is called
- (void)panoramaView:(GMSPanoramaView *)view didMoveToPanorama:(GMSPanorama *)panorama
      nearCoordinate:(CLLocationCoordinate2D)coordinate
{
    if (!panorama)
    {
        [self shuffleLocation];
    }

}

- (void)shuffleLocation
{
    CLLocationCoordinate2D newLocation = [self randomLatitudeLongitude];
    [self.panoView moveNearCoordinate:newLocation];
}

 (CLLocationCoordinate2D) randomLatitudeLongitude
{
    CountryBBVal auBB = [[GGData SharedInstance] boundingBoxForCountry:Australia];

    double ranLongitude = [self randomDoubleBetween: auBB.NELng and: auBB.SWLng]; // Boundix Box
    double ranLatitude = [self randomDoubleBetween: auBB.NELat and: auBB.SWLat];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [formatter setMaximumFractionDigits:4];
    [formatter setDecimalSeparator:@"."];

    NSString *formattedNumberLng = [formatter stringFromNumber:@(ranLongitude)];
    NSString *formattedNumberLat = [formatter stringFromNumber:@(ranLatitude)];
    CLLocationCoordinate2D ranLatLng = CLLocationCoordinate2DMake([formattedNumberLat doubleValue], [formattedNumberLng doubleValue]);
    //NSLog(@"ranLatLng: [%f] [%f]", ranLatLng.latitude, ranLatLng.longitude);




    return ranLatLng;
}

1 个答案:

答案 0 :(得分:1)

您所拥有的是一种非确定性的查找照片的方式,因此您无法控制所需的时间。您编码的内容是最佳的,代码中没有性能提升。只有你的算法不是最佳的,你需要考虑一个更好的策略来获取随机照片。