Mapy Google iOS SDK przenieś przycisk „Moja lokalizacja” do lewego dolnego rogu

Korzystając z Google Maps dla iOS SDK, przycisk „Moja lokalizacja” jest domyślnie umieszczony w prawym dolnym rogu:

Chciałbym umieścić go w lewym dolnym rogu (tak, zdaję sobie sprawę, że muszę uważać, aby nie zasłonić tam logo „Google”). Nie wierzę, że SDK ma „oficjalny” sposób na zrobienie tego, ale na podstawieta odpowiedź Zorientowałem się, jak trzymać podglądzie przycisku Moja lokalizacja, aby móc go ustawić.

Część, która mnie myli, to jakie wartości powinienem podawać ramce widoku Moja lokalizacja i / lub ograniczeniom, aby uzyskać ją tam, gdzie chcę. Na początek przycisk Moja lokalizacja w obecnej postaci maframe.origin.x = -74 iframe.origin.y = -54. Po raz pierwszy widziałem ujemne współrzędne dla aframe.origin.x lub aframe.origin.y i nie jestem nawet pewien, jak iOS obsługuje ujemne współrzędne. Moją pierwszą myślą było to, że np.frame.origin.x = -74 jest równa[view superview].frame.size.width - 74tj. wartość ujemna jest odejmowana od szerokości lub wysokości podglądu. Ale potem spojrzałem na szerokość i wysokość superviewu i oba są0.0. Oto mój kod, który wyświetla pewne informacje o mapie i ramkach i ograniczeniach przycisku lokalizacji:

- (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);
            }
        }
    }
}  

A oto wyjście:

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

Próbowałem w prosty sposób ustawić przycisk „Moja lokalizacja” wTop lewy róg z:

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

ale wtedy przycisk Moja lokalizacja nie pojawił się w ogóle.

Próbowałem także małych modyfikacji istniejących wartości (np. Zmianyframe.origin.x z-76.0 do-66.0 i widzę różnicę w pozycji, więc przynajmniej jestem przekonany, że modyfikuję pozycję właściwego widoku. Nadal nie rozumiem i) jak działają ujemne współrzędne i ii) jak prawidłowo ustawić widok w tym konkretnym scenariuszu. Po przeczytaniu odpowiedzi nato pytanie Myślałem, że mam rozsądne pojęcie o ramkach i granicach widoku, ale biorąc pod uwagę, że nie udało mi się jeszcze tego dokonać, najwyraźniej nie.

questionAnswers(6)

yourAnswerToTheQuestion