Chciałbym móc zmienić dopełnienie GMSMapView bez zmiany położenia mapy na. Teraz Google Maps iOS SDK zmienia położenie mapy, tak aby ten sam punkt znajdował się pośrodku po zastosowaniu dopełnienia. To różni się od tego, jak działa zestaw SDK systemu Android, który po prostu pozostawia mapę taką, jaka jest.Jak mogę zmienić dopełnienie GMSMapView bez przenoszenia mapy?
Znalazłem niewielkie obejście tego problemu, ale nie działa ono konsekwentnie. można obliczyć, co nowa lokalizacja centrum powinno być i zaktualizuj aparat mapy przy zmianie wyściółkę z następujących ...
UIEdgeInsets oldPadding = self.mapCtrl.map.padding;
UIEdgeInsets newPadding = UIEdgeInsetsMake(top, left, bottom, right);
float deltaX = ((newPadding.right - newPadding.left)/2 - (oldPadding.right-oldPadding.left)/2);
float deltaY = ((newPadding.top - newPadding.bottom)/2 - (oldPadding.top-oldPadding.bottom)/2);
GMSCameraUpdate *updatedCamera = [GMSCameraUpdate scrollByX:deltaX Y:deltaY];
[self.mapCtrl.map setPadding:newPadding];
[self.mapCtrl.map moveCamera:updatedCamera];
Ale powiedziałbym, że to działa tylko 50%. Pozostałe 50% mapy przenosi się do nowej lokalizacji wypełnienia, a następnie z powrotem tam, gdzie chcę, aby była.
Widzę dwa możliwe rozwiązania dla tego ... A) zmienić dopełnienie w inny sposób, tak aby nie przesuwał mapy, lub B) wymyślić sposób, aby powyższy kod zadziałał, pauzując w jakiś sposób lub grupowanie ruchów mapy tak, aby oba połączenia odbywały się tylko na raz. Ale nie potrafię wymyślić, jak zrobić jedną z tych dwóch rzeczy.