缩放GMSMapView以适应GMSMarker标记?

时间:2015-12-14 07:55:48

标签: ios objective-c iphone google-maps cllocation

我期待该代码,他会将所有标记放在地图上并缩放GMSMapView以适合我的所有GMSMarker,我用于includingCoordinateGMSCoordinateBounds方法1}},但它并不像我想的那样工作。

我的例子:

#import "ViewController.h"

@import GoogleMaps;
@import CoreLocation;

@interface ViewController ()

@property (weak, nonatomic) IBOutlet GMSMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableArray <CLLocation *> *locations = [NSMutableArray array];
    [locations addObject:[[CLLocation alloc] initWithLatitude:55.755786 longitude:37.617633]];
    [locations addObject:[[CLLocation alloc] initWithLatitude:-22.9035393 longitude:-43.2095869]];
    [locations addObject:[[CLLocation alloc] initWithLatitude:51.50998 longitude:-0.1337]];

    NSArray *titles = @[@"marker1", @"marker2", @"marker3"];

    NSMutableArray <GMSMarker *> *markers = [NSMutableArray array];

    for (NSUInteger i = 0; i < 3; ++i)
    {
        GMSMarker *marker = [[GMSMarker alloc] init];
        marker.position = locations[i].coordinate;
        marker.title = titles[i];
        marker.map = _mapView;
        [markers addObject:marker];
    }

    GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:markers[0].position coordinate:markers[0].position];

    for (GMSMarker *marker in markers)
    {
        bounds = [bounds includingCoordinate:marker.position];
    }

    [_mapView animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds]];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end

这是此代码的结果:

enter image description here

1 个答案:

答案 0 :(得分:0)

从图像中我认为这可能是地图可用的最大缩小级别。 如果这样,屏幕将成为适合所有标记的矩形区域的中心。 尝试将几个标记放在一起,看看边界是否适合地图中的所有标记,如果你成功了,那么恐怕你不会超出这个水平。