GMSMapView не увеличивает масштаб

Я загружаю Google Place из API автозаполнения, а затем ищу информацию о месте, чтобы увеличить карту.

У меня есть GMSMapView, определенный в моем XIB, который я вижу, когда запускаю свой контроллер представления.

Первоначально уровень масштабирования равен 4. Когда я устанавливаю координату и уровень масштабирования, он остается уменьшенным, несмотря на то, что мой отладчик говорит, что уровень масштабирования равен 2.

Как увеличить масштаб?

(lldb) po self.map
<GMSMapView: 0x7f8c62a9ebc0; frame = (0 73.3333; 414 576.667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f8c67029fc0>; layer = <GMSMapLayer: 0x7f8c62a57aa0>>

(lldb) po self.map.camera
GMSCameraPosition 0x7f8c62d2d030: target:(29.741, -95.374) bearing:0.000 zoomLevel:2.000 viewingAngle:0.000


- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupButtons];

    self.map.delegate = self;

    self.client = [GMSPlacesClient sharedClient];
    [self.client lookUpPlaceID:self.prediction.placeID callback:^(GMSPlace * _Nullable result, NSError * _Nullable error) {
        [self showResult:result];
    }];
}

- (void)showResult:(GMSPlace *)place {
    self.place = place;

GMSCameraPosition *position = [[GMSCameraPosition alloc] initWithTarget:place.coordinate zoom:0.2 bearing:0 viewingAngle:0];
    [self.map setCamera:position];
    [self.map animateWithCameraUpdate:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];   

    [self.map moveCamera:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];
}

person quantumpotato    schedule 25.06.2016    source источник
comment
Вы пробовали такие методы, как setCamera: или [self.map animateWithCameraUpdate:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]]; ?   -  person emotality    schedule 26.06.2016
comment
Я пробовал animateWithCameraUpdate и setCamera -- отредактировано выше^   -  person quantumpotato    schedule 26.06.2016


Ответы (2)


Я думаю, вы делаете что-то не так здесь. Вы сказали, что

Первоначально уровень масштабирования равен 4. Когда я устанавливаю координату и уровень масштабирования, он остается уменьшенным, несмотря на то, что мой отладчик говорит, что уровень масштабирования равен 2.

Просто для ясности: уровень масштабирования 4 > уровень масштабирования 2. Если вы хотите, чтобы ваша карта была увеличена, попробуйте использовать более высокие значения, например, около 15, 16 и т. д.

Надеюсь, поможет.

person Bharat    schedule 28.06.2016

Вы можете установить масштаб. программно с помощью animateToZoom: в GMSMapView.

Примеры кодов показаны ниже:

Цель-C

[mapView_ animateToZoom:12];

Свифт

mapView.animateToZoom(12)

Кроме того, вы также можете ограничить диапазон масштабирования карты, установив минимальный и максимальный уровни масштабирования. Диапазон масштабирования должен быть установлен с помощью метода setMinZoom:maxZoom:, однако значения можно считывать по отдельности с помощью свойств minZoom и maxZoom. Это полезно при ограничении только одного из значений.

Вы можете найти примеры кодов в данной документации, а также можете использовать класс GMSMapView. Ссылка на другие методы, связанные с картой.

И этот пост SO - GMSMapView animateToCameraPosition увеличить - уменьшить анимацию также может помочь.

person Teyam    schedule 28.06.2016