Изменение размера Google Maps MapView iOS

Я попытался использовать код из GoogleMapsSDKDemos, чтобы изменить размер карты на меньший прямоугольник на экране, но, похоже, это не имеет никакого эффекта. Вот мой код:

mapView = [[GMSMapView alloc] initWithFrame:CGRectZero]; mapView.camera = [GMSCameraPosition cameraWithLatitude: 38,98549782690282 долгота: -76,94636067188021 масштаб: 17];

self.view = [[UIView alloc] initWithFrame:CGRectZero];
mapView.autoresizingMask =
UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
mapView.frame = self.view.frame;
mapView.clipsToBounds = YES;
mapView.myLocationEnabled = YES;
mapView.settings.tiltGestures = NO;
mapView.settings.zoomGestures = NO;

mapView.frame = CGRectMake(0,0, 10, 25);

[self.view addSubview:self.mapView];

Эта предпоследняя строка, по-видимому, должна ограничивать MapView небольшим квадратом, но она по-прежнему занимает весь экран.


person CSStudent    schedule 09.03.2013    source источник


Ответы (2)


Я бы попробовал что-то вроде этого:

GMSCameraPosition* camera = [GMSCameraPosition 
    cameraWithLatitude: 38.98549782690282 
    longitude: -76.94636067188021 
    zoom: 17];
GMSMapView* mapView = 
    [GMSMapView mapWithFrame: GRectMake(0,0, 10, 25) camera: camera];

Обратите внимание, что комментарии к классу GMSMapView в GMSMapView.h говорят:

Этот класс не должен быть создан напрямую, вместо этого он должен быть создан с помощью [GMSMapServices mapWithFrame:camera:]

person Saxon Druce    schedule 15.03.2013
comment
Я только что попробовал это, и это не сработало, видимо, в моем файле GMSServices.h нет этого метода mapWithFrame. Я вернулся и проверил API, и если вы посмотрите здесь, использовать класс GMMapView? Я не совсем уверен, что то, что вы сказали, имеет смысл, но xcode не может найти метод mapWithFrame в GMSServices (и я тоже не могу) - person CSStudent; 15.03.2013
comment
Ах да, извините, я исходил из того комментария в шапке, а не из собственного кода. Звонить нужно mapWithFrame на GMSMapView, а не GMSServices (наверное, комментарий в шапке некорректен). Я обновил свой код выше. - person Saxon Druce; 16.03.2013
comment
Это все еще не работает для меня, вы пробовали это сами? У меня есть smallMap = [GMSMapView mapWithFrame: CGRectMake(0,0, 10, 25) camera: camera];, где smallmap — это GMMapView в раскадровке, и он все еще занимает весь экран. - person CSStudent; 16.03.2013
comment
Я создаю свой пользовательский интерфейс программно, и передача размера в mapWithFrame работает там. Я не пробовал с раскадровкой или xib. - person Saxon Druce; 16.03.2013
comment
Я как бы решил проблему, просто используя представление контейнера со всем контроллером представления внутри него. Сомневаюсь, что это самое эффективное решение, но оно работает. - person CSStudent; 16.03.2013

Попробуйте это, чтобы добавить карту в верхнюю часть экрана:

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude
                                                        longitude:longitude
                                                             zoom:10];



mapView_ = [GMSMapView mapWithFrame:CGRectMake(0,0, width, height) camera:camera];
mapView_.delegate = self;
mapView_.myLocationEnabled = YES;
[self.view addSubview:mapView_];
person Lücks    schedule 17.12.2013