使用正确的框架在 UIView 中嵌入谷歌地图

Posted

技术标签:

【中文标题】使用正确的框架在 UIView 中嵌入谷歌地图【英文标题】:Embed Google Maps in UIView with correct Frame 【发布时间】:2015-10-29 01:49:52 【问题描述】:

在我的 ios 应用程序中,我有一个父 mapViewController(UIView),我尝试通过执行 [self.mapViewContainer addSubview:mapView_]; 将其添加到 Google 地图子视图

在初始化 mapView_ 时,我尝试使用容器 UIView 的边界,以便它通过执行以下操作来利用整个空间:

mapView_ = [GMSMapView mapWithFrame:self.mapViewContainer.bounds camera:camera];

虽然地图看起来很好,但每当我尝试将地图以坐标为中心时,应该居中的坐标要么位于右下角,要么位于底部中心,具体取决于纵向/横向模式。

我的印象是地图超出了预期的边距,我无法修复。

有什么方法可以轻松完成我想做的事情。我尝试将 mapView_ 初始化为

GMSMapView *mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];

但这只是显示一个空白屏幕。

【问题讨论】:

【参考方案1】:

如果可能,您可以将 Google 地图视图放置在情节提要中。

如果你想在代码中做,避免使用框架,尝试使用约束。

【讨论】:

【参考方案2】:

因为您使用 CGRectZero.so 这就是为什么不显示您的谷歌地图,所以未显示以下行谷歌地图。

GMSMapView *mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];

这段代码对我有用……你可能会得到帮助……

查看我的代码...您在视图控制器中显示您的谷歌地图。

 GMSCameraPosition *camera ;

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )

     camera = [GMSCameraPosition cameraWithLatitude:<pass your latitude>
                                                            longitude:<pass your longitude>
                                                                 zoom:17];

else

    camera = [GMSCameraPosition cameraWithLatitude:<pass your latitude>
                                                            longitude:<pass your longitude>
                                                                 zoom:16];



GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectMake(0,0, self.view.frame.size.width , self.view.frame.size.height)   camera:camera];
mapView.myLocationEnabled = YES;


if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )

    [mapView setMinZoom:17 maxZoom:23];

else

     [mapView setMinZoom:16 maxZoom:20];



// [mapView setMinZoom:16 maxZoom:20];


// mapView.settings.indoorPicker =YES;

GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(<pass your latitude>,<pass your longitude>);
marker.appearAnimation = kGMSMarkerAnimationPop;
marker.title =@"Driver's location";

marker.icon = [UIImage imageNamed:@"GoogleIcon"];
marker.map = mapView;

[self.view addSubview:mapView];

[self.view insertSubview:self.btnRefresh aboveSubview:mapView];

【讨论】:

它产生的结果与 mapView_ = [GMSMapView mapWithFrame:self.mapViewContainer.bounds camera:camera];

以上是关于使用正确的框架在 UIView 中嵌入谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图嵌入搜索不显示结果?

在 Java 桌面应用程序中嵌入谷歌地图

如何获取谷歌地图标记的 UIView 实例?

如何从新的谷歌地图嵌入中删除框?

如何在您的网站中嵌入样式化的谷歌地图

如何禁用滚动缩放。谷歌地图嵌入 API [重复]