GMSMapView 没有放大
GMSMapView is not zooming in
我正在从自动完成中加载 Google 地点 API,然后查找地点详细信息以在我的地图上放大。
我在我的 XIB 中定义了一个 GMSMapView
,当我 运行 我的视图控制器时我可以看到它。
最初缩放级别为 4。
当我设置坐标和缩放级别时,尽管我的调试器说缩放级别是 2,它仍然保持缩小。
如何放大?
(lldb) po self.map
<GMSMapView: 0x7f8c62a9ebc0; frame = (0 73.3333; 414 576.667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f8c67029fc0>; layer = <GMSMapLayer: 0x7f8c62a57aa0>>
(lldb) po self.map.camera
GMSCameraPosition 0x7f8c62d2d030: target:(29.741, -95.374) bearing:0.000 zoomLevel:2.000 viewingAngle:0.000
- (void)viewDidLoad {
[super viewDidLoad];
[self setupButtons];
self.map.delegate = self;
self.client = [GMSPlacesClient sharedClient];
[self.client lookUpPlaceID:self.prediction.placeID callback:^(GMSPlace * _Nullable result, NSError * _Nullable error) {
[self showResult:result];
}];
}
- (void)showResult:(GMSPlace *)place {
self.place = place;
GMSCameraPosition *position = [[GMSCameraPosition alloc] initWithTarget:place.coordinate zoom:0.2 bearing:0 viewingAngle:0];
[self.map setCamera:position];
[self.map animateWithCameraUpdate:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];
[self.map moveCamera:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];
}
您可以在 GMSMapView 上使用 animateToZoom:
以编程方式设置 zoom。
示例代码如下:
Objective-C
[mapView_ animateToZoom:12];
Swift
mapView.animateToZoom(12)
除此之外,您还可以通过设置最小和最大缩放级别来限制地图可用的缩放范围。必须使用 setMinZoom:maxZoom:
方法设置缩放范围,但是可以使用 minZoom
和 maxZoom
属性单独读取值。这在仅限制其中一个值时很有用。
您可以在给定的文档中找到示例代码,您也可以使用 GMSMapView Class Reference 与地图相关的其他方法。
而且,这个 SO post - 也可能有帮助。
我猜你做错了什么。你说的
Originally the zoom level is at 4. When I set the coordinate and zoom level, it stays zoomed out despite my debugger saying the zoom level is 2.
需要说明的是,缩放级别 4 > 缩放级别 2。如果您希望地图放大,请尝试使用更高的值,即大约 15、16 等。
希望对您有所帮助。
我正在从自动完成中加载 Google 地点 API,然后查找地点详细信息以在我的地图上放大。
我在我的 XIB 中定义了一个 GMSMapView
,当我 运行 我的视图控制器时我可以看到它。
最初缩放级别为 4。 当我设置坐标和缩放级别时,尽管我的调试器说缩放级别是 2,它仍然保持缩小。
如何放大?
(lldb) po self.map
<GMSMapView: 0x7f8c62a9ebc0; frame = (0 73.3333; 414 576.667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f8c67029fc0>; layer = <GMSMapLayer: 0x7f8c62a57aa0>>
(lldb) po self.map.camera
GMSCameraPosition 0x7f8c62d2d030: target:(29.741, -95.374) bearing:0.000 zoomLevel:2.000 viewingAngle:0.000
- (void)viewDidLoad {
[super viewDidLoad];
[self setupButtons];
self.map.delegate = self;
self.client = [GMSPlacesClient sharedClient];
[self.client lookUpPlaceID:self.prediction.placeID callback:^(GMSPlace * _Nullable result, NSError * _Nullable error) {
[self showResult:result];
}];
}
- (void)showResult:(GMSPlace *)place {
self.place = place;
GMSCameraPosition *position = [[GMSCameraPosition alloc] initWithTarget:place.coordinate zoom:0.2 bearing:0 viewingAngle:0];
[self.map setCamera:position];
[self.map animateWithCameraUpdate:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];
[self.map moveCamera:[GMSCameraUpdate setTarget:place.coordinate zoom: 0.15]];
}
您可以在 GMSMapView 上使用 animateToZoom:
以编程方式设置 zoom。
示例代码如下:
Objective-C
[mapView_ animateToZoom:12];
Swift
mapView.animateToZoom(12)
除此之外,您还可以通过设置最小和最大缩放级别来限制地图可用的缩放范围。必须使用 setMinZoom:maxZoom:
方法设置缩放范围,但是可以使用 minZoom
和 maxZoom
属性单独读取值。这在仅限制其中一个值时很有用。
您可以在给定的文档中找到示例代码,您也可以使用 GMSMapView Class Reference 与地图相关的其他方法。
而且,这个 SO post -
我猜你做错了什么。你说的
Originally the zoom level is at 4. When I set the coordinate and zoom level, it stays zoomed out despite my debugger saying the zoom level is 2.
需要说明的是,缩放级别 4 > 缩放级别 2。如果您希望地图放大,请尝试使用更高的值,即大约 15、16 等。
希望对您有所帮助。