2013-04-28 4 views
6

Новый SDK Google Maps для iOS теперь имеет виджет пользовательского интерфейса для отображения компаса. Единственная проблема заключается в том, что я вижу только способы включения или выключения этого режима. Вы знаете, можно ли изменить его положение на карте?Перемещение карт Google Compass

https://developers.google.com/maps/documentation/ios/map#compass

ответ

0

Это не возможно изменить расположение кнопки компаса. Пожалуйста, напишите feature request.

3

Не очень православный, но он работает.

for (UIView *view in gmMapView.subviews) { 
     NSRange isRange = [view.description rangeOfString:@"GMSCompassButton"]; 
     if (isRange.location != NSNotFound) { 
      CGRect frame = view.frame; 
      frame.origin.y=55; 
      frame.origin.x=gmMapView.frame.size.width/2; 
      [view setFrame:frame]; 
     } 
    } 
+1

это не работает для меня. Я видел журнал, распечатывая subviews, нет элемента «GMSCompassButton». – regeint

0

Обходной ищет "GMSCompassButton" не работает больше (Google Maps SDK 1.4).

+0

Причина в том, что «GMSCompassButton» теперь завернута в другое подзаголовок под названием «GSMUISettingsView». Вам нужно будет добавить еще один набор циклов for, чтобы он работал. –

0

Вот последнее обходное решение, которое работает с SDK 1.5.

- (void)moveCompassButton:(GMSMapView *) map{ 
    for(UIView *view in [map subviews]){ 
     NSRange isRange = [view.description rangeOfString:@"GMSUISettingsView"]; 
     if(isRange.location != NSNotFound){ 
      for(UIView *subview in [view subviews]){ 
       NSRange isRange2 = [subview.description rangeOfString:@"GMSCompassButton"]; 
       if(isRange2.location != NSNotFound){ 
        CGRect frame = view.frame; 
        frame.origin.y = 55; 
        frame.origin.x = map.frame.size.width/2 - 10; 
        [view setFrame:frame]; 
       } 
      } 
     } 
    } 
} 

Вы можете вызвать эту функцию с помощью своего вида карты в качестве параметра, и вы готовы к работе.

0

Новая версия SDK 1.5 для Карт Google включает в себя свойство paddern для GMSMapView. Теперь можно установить область, в которой будут отображаться элементы пользовательского интерфейса.

4
-(void)viewDidAppear:(BOOL)animated{ 
mapView.padding = UIEdgeInsetsMake (64,0,0,0); 
} 

Этот код будет перемещать кнопку компаса вниз в 64 пикселя.