【发布时间】:2015-07-30 11:50:51
【问题描述】:
我希望能够在不更改地图位置的情况下更改 GMSMapView 的填充。现在,Google Maps iOS SDK 会更改地图位置,以便在应用填充后同一点位于中心。这与 Android SDK 的工作方式不同,后者只是让地图保持原样。
我为此找到了一个轻微的解决方法,但它不能始终如一地工作。当我使用以下内容更改填充时,我可以计算新的中心位置并更新地图相机...
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];
但我会说它只能工作 50%。地图的另外 50% 移动到新的填充位置,然后返回到我想要的位置。
我看到了两种可能的解决方案... A) 以不同的方式更改填充,使其不会移动地图,或 B) 通过某种方式暂停或找出使上述代码工作的方法对地图移动进行分组,以便两个呼叫一次通过。但我不知道如何使这两件事发生。
【问题讨论】: