Google Maps iOS SDK переместить кнопку «Мое местоположение» в левый нижний угол

Используя Google Maps для iOS SDK,Мое местонахождение" кнопка по умолчанию расположена в правом нижнем углу: I '

Я хотел бы разместить его в левом нижнем углу (да, я понимаю, что мне нужно быть осторожным, чтобы не затемнять "Google» логотип есть). Я нене думаю, что SDK имеет "официальный» способ сделать это, но на основеэтот ответ Я понял, как заполучить подпредставление кнопки «Мое местоположение», чтобы расположить его.

Смущает меня то, какие значения я должен придавать представлению «Мое местоположение».Рамка и / или границы, чтобы получить его там, где я хочу. Для начала, кнопка «Мое местоположение» в том виде, в котором она находится в данный момент, имеет =frame.origin.x-74 и =frame.origin.y-54, Это первый раз, когда явидел отрицательные координаты дляframe.origin.x илиframe.origin.y и я'Я даже не уверен, как iOS обрабатывает отрицательные координаты. Моей первой мыслью было, например,frame.origin.x = -74 эквивалентно[view superview].frame.size.width - 74, т.е. отрицательное значение вычитается из ширины или высоты суперпредставления. Но потом я посмотрел на ширину и высоту суперпредставления, и ониоба0.0, Вот's мой код, который выводит некоторую информацию как о карте, так и о границах и границах кнопок my location:

- (void)loadView {
    GMSCameraPosition *cam = [GMSCameraPosition cameraWithLatitude:jcuTownsvilleCenterCampusLat longitude:jcuTownsvilleCenterCampusLon zoom:17];
    self.campusMap = [GMSMapView mapWithFrame:CGRectZero camera:cam];
    self.campusMap.myLocationEnabled = YES;
    self.campusMap.settings.myLocationButton = YES;
    self.view = self.campusMap;

    for (UIView *view in self.campusMap.subviews) {
        NSLog(@"view.description: %@",view.description);
        if ([view isKindOfClass:[UIButton class]]) {
            // these four values in the conditional below are just what happen to
            // be the values corresponding to the "my location button" in Google Maps
            // for iOS SDK version 1.3.0.3430.  They might change over time, so this
            // code is somewhat fragile.
            if (view.frame.size.width == 76 && view.frame.size.height == 54 &&
                view.frame.origin.x == -76 && view.frame.origin.y == -54) {
                NSLog(@"we may have found the 'my location' button");

                NSLog(@"self.campusMap coord stats:");
                NSLog(@"bounds.origin.x: %f", self.campusMap.bounds.origin.x);
                NSLog(@"bounds.origin.y: %f", self.campusMap.bounds.origin.y);
                NSLog(@"bounds.size.width: %f", self.campusMap.bounds.size.width);
                NSLog(@"bounds.size.height: %f", self.campusMap.bounds.size.height);
                NSLog(@"frame.origin.x: %f", self.campusMap.frame.origin.x);
                NSLog(@"frame.origin.y: %f", self.campusMap.frame.origin.y);
                NSLog(@"frame.size.width: %f", self.campusMap.frame.size.width);
                NSLog(@"frame.size.height: %f", self.campusMap.frame.size.height);

                NSLog(@"view coord stats:");
                NSLog(@"bounds.origin.x: %f", view.bounds.origin.x);
                NSLog(@"bounds.origin.y: %f", view.bounds.origin.y);
                NSLog(@"bounds.size.width: %f", view.bounds.size.width);
                NSLog(@"bounds.size.height: %f", view.bounds.size.height);
                NSLog(@"frame.origin.x: %f", view.frame.origin.x);
                NSLog(@"frame.origin.y: %f", view.frame.origin.y);
                NSLog(@"frame.size.width: %f", view.frame.size.width);
                NSLog(@"frame.size.height: %f", view.frame.size.height);
            }
        }
    }
}  

И вот вывод:

self.campusMap coord stats:    
bounds.origin.x: 0.000000  
bounds.origin.y: 0.000000  
bounds.size.width: 0.000000  
bounds.size.height: 0.000000  
frame.origin.x: 0.000000  
frame.origin.y: 0.000000  
frame.size.width: 0.000000  
frame.size.height: 0.000000  
view coord stats:  
bounds.origin.x: 0.000000  
bounds.origin.y: 0.000000  
bounds.size.width: 76.000000  
bounds.size.height: 54.000000  
frame.origin.x: -76.000000  
frame.origin.y: -54.000000  
frame.size.width: 76.000000  
frame.size.height: 54.000000

Я пытался как простой тест для позиционирования "Мое местонахождение" кнопка вТоп левый угол с:

CGRect frame = view.frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size.width = 76;
frame.size.height = 54;
[view setFrame:frame];

но тогда кнопка «Мое местоположение» нене показывать вообще.

Я также пробовал небольшие модификации существующих значений (например, изменениеframe.origin.x от-76.0 в-66.0 и вижу разницу в положении, так что, по крайней мере, яя уверен, что ям, изменяя положение правого вида. Я до сих пор неt) понять, как работают отрицательные координаты и как правильно позиционировать представление в этом конкретном сценарии. После прочтения ответов наэтот вопрос Я думал, что у меня есть разумное представление о кадрах и границах, но, учитывая, что у меня нетЭто пока не работает, по-видимому, нет.

Ответы на вопрос(6)

Ваш ответ на вопрос