如何在 iOS 中的 Google 地图上添加按钮?

2024-01-10

我是 iOS 编程新手,我已经下载了适用于 iOS 的谷歌地图 sdk,并按照他们网站上的说明进行操作(如此链接所示)https://developers.google.com/maps/documentation/ios/start https://developers.google.com/maps/documentation/ios/start) 并能够在我的应用程序中获取地图。

现在,我尝试在 Google 地图底部的屏幕上添加一个按钮,以便用户可以选择返回到上一个屏幕。

我只知道 UIButton 是 UIView 的子类,我们可以通过使其成为该类的子视图来使按钮出现在视图上。以前,iOS 通过 MKMapView 默认使用 Google 地图,我在书籍和互联网上看到过一些示例,其中显示了应用程序的屏幕截图,其中按钮或文本框将出现在地图上。但现在仅仅拖动界面生成器中的按钮对谷歌地图的SDK没有帮助。

这是我的代码:

视图控制器.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <GoogleMaps/GoogleMaps.h>


@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIButton *btn;


@end

视图控制器.m

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <GoogleMaps/GoogleMaps.h>
#import <CoreLocation/CoreLocation.h>


@interface ViewController ()

@end

@implementation ViewController
{
    GMSMapView *mapView_;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)loadView
{
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;

    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
    [locationManager startUpdatingLocation];

    //Latitude and longitude of the current location of the device.
    double lati = locationManager.location.coordinate.latitude;
    double longi = locationManager.location.coordinate.longitude;
    NSLog(@"Latitude = %f", lati);
    NSLog(@"Longitude = %f", longi);

    CLLocation *myLocation = [[CLLocation alloc] initWithLatitude:lati longitude:longi];

    // Create a GMSCameraPosition that tells the map to display the coordinate

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lati
                                                            longitude:longi
                                                                 zoom:11.5];

    mapView_ = [GMSMapView mapWithFrame:[[UIScreen mainScreen] bounds] camera:camera];
    mapView_.myLocationEnabled = YES;
    self.view = mapView_;

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(lati, longi);
    marker.title = @"It's Me";
    marker.snippet = @"My Location";
    marker.map = mapView_;

    [mapView_ addSubview:_btn];
    [mapView_ bringSubviewToFront:_btn];

}
@end

您可以看到,在最后两行中,我已将按钮设置为地图视图的子视图,并尝试将其置于前面。但这没有帮助。请让我知道我缺少什么,或者是否有其他方法可以通过使用其他功能来做到这一点。

另请检查我创建的故事板的屏幕截图,以便您可以更好地理解我在这里尝试做的事情。

Thanks.


GMSMapView是的子类UIView这样您就可以向任何其他视图添加子视图

试试这个代码

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(mapView_.bounds.size.width - 110, mapView_.bounds.size.height - 30, 100, 20);
button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
[button setTitle:@"Button" forState:UIControlStateNormal];
[mapView_ addSubview:button];

It adds 100x20按钮作为子视图GMSMapView,位于右下角。我已经测试过了,可以像在任何其他视图中一样触摸按钮

编辑: 还将所有代码从-loadView to -viewDidLoad. -loadView使用 IB 创建 UI 时永远不会调用方法。文件至-loadView says:

如果您使用 Interface Builder 创建视图并初始化视图控制器,则不得重写此方法。

编辑2: 我相信当您使用 Interface Builder 创建视图层次结构时,您无法重置self.view像你一样的财产。

在你的-viewDidLoad

[self.view addSubview: mapView_];

代替

self.view = mapView_;

如果你路过GMSMapView to the self.view属性,地图只是此时控制器中的视图。我相信,这就是您看不到 IB 创建的按钮的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 中的 Google 地图上添加按钮? 的相关文章

  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • locationOfTouch 和 numberOfTouches

    你好 我有这个识别器 设置为 2 次触摸 但它只返回一个 而不是两个 CGPoint void gestureLoad UIGestureRecognizer recognizer recognizer UITapGestureRecogn
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • iOS 中 NSDecimalNumber 的小数分隔符错误

    我尝试通过以下方式输出具有正确的小数分隔符的十进制数的描述 NSString strValue 9 94300 NSDecimalNumber decimalNumber NSDecimalNumber decimalNumberWithS
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • 直接在 XCode 中编译 Arm Assembly

    将arm汇编代码编译成xcode的最佳方法是什么 我有生成的那些程序集文件 有没有办法可以将 s 文件直接包含到我拥有的 C 代码中 或者我需要先运行一个预处理器 它将生成 o 文件 我可以将其与我的文件链接 如果是这样的话 在 XCode
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 接收者'ClassName'是一个转发类,对应的@interface可能不存在

    我目前正在寻找一个UIPickerTable在 UIPickerView subviews 内 所以我循环并执行isKindOfClass UIPickerTable class 它有效 但由于 UIPickerTable 的标头未公开 我
  • 从应用程序启动 iPhone 设置屏幕?

    我正在开发一个应用程序 我希望按下按钮时 iPhone 设置屏幕应该打开 苹果有访问限制吗 到底能不能 如果能的话怎么办 不 你不能那样做 但是 作为替代方案 您可以使用这个框架 http www inappsettingskit com
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do

随机推荐

  • 如何在 Chrome 浏览器中调试 AngularJS [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在研究 AngularJS 我想在chrome中调试代码 在 Firefox 中 我可以在 Firebug 的帮助下调试它 任何想法 谢
  • Netty-无法访问类 jdk.internal.misc.Unsafe

    当我将 Java 从 8 升级到 11 时 我收到来自 Netty 的错误 jdk internal misc Unsafe 详细信息如下 我知道这是一条调试级别消息 我可以更改日志级别以忽略它 但我不确定当我忽略它时是否会出现其他问题 例
  • 等待多个 Akka FSM 消息

    我有一个 Akka FSM actor 在收到消息后运行以下伪代码ReadyState lookupA Wrapper Lookup A lookupB Wrapper Lookup B lookupC Wrapper Lookup C g
  • 在 Visual Studio 中折叠相关文件

    在 Visual Studio 中 大多数人都会注意到相关文件可以折叠为一个 例如 Form1 cs Form1 Designer cs 我正在创建一个 DAL 库 并将部分类拆分为多个文件 例如 SomeTableClass cs Som
  • windows下“我的电脑”文件夹的路径是什么?

    我正在使用 Visual Studio IDE 开发 C windowsform 项目 我用CFileDialog类要求用户选择要打开的文件 它显示通常打开的文件选择窗口 我希望显示的默认文件夹与单击 我的电脑 时访问的文件夹相同 其中显示
  • Visual Studio 中的引用属性的别名是什么?

    在 Visual Studio 中的 C 项目中 展开 References 文件夹 然后查看任何引用的属性 您会看到 Aliases 属性 在项目中 该属性具有 全局 值 有人可以告诉我这个属性的用途以及如何使用它吗 Thanks 您可能
  • MySQL 扩展显示

    是否有相当于 psql 的 x 来查看新行中每列的记录 Append G到语句末尾而不是分号 SELECT FROM table name WHERE condition G
  • array_multisort():数组大小不一致[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下方法在其子数组的基础上对数组进行排序array multisort 功能 在努力的同时 print r mar echo br arr2 array multisort mar array we
  • R 中的 SVM:“预测器必须是数字或有序的。”

    我是 R 新手 遇到了这个问题 我想比较两种预测技术 支持向量机和神经网络 将它们应用于某些数据 并且我想比较它们的性能 为此 我使用 ROC 曲线 该代码应该计算 ROC 曲线下的面积 但它不起作用 神经网络代码工作正常 但是当 SVM
  • 将谷歌电子表格中的批量数据填充到谷歌表单下拉列表中

    我有一个包含多个部分的谷歌表单 每个部分都有一个下拉列表 我希望从电子表格中提取具有匹配名称的下拉列表的数据 这是我运行的脚本 但它似乎不起作用 function getDataFromGoogleSheets const ss Sprea
  • wagtail页面模型与其自身的多对多关系?

    所以我得到了一个带有 同伴 字段的 PlantDetailPage 模型 是的 植物可以是同伴 其中我应该能够选择其他 PlantDetailPages 我得到了显示的东西 在内联中创建新植物 是的 菜单中的菜单中的菜单 但有几个问题 1
  • 在android中查找从源到目的地的路线方向

    我是android新手 我已经成功编写了显示谷歌地图的代码 我可以给出源地址和目标地址 并使用反向地理编码概念将图钉放置在那里 该场景是我想显示从源点到目的地点的驾驶 步行 骑自行车方向 并显示从源点到目的地的一条线 据我所知 Androi
  • UISwipeGestureRecognizer 无法识别在视图外发起的滑动手势

    func addSwipe self isUserInteractionEnabled true let directions UISwipeGestureRecognizerDirection right left for directi
  • 在自定义印迹上使用什么、如何以及何时使用静态格式、格式和格式?

    描述 我正在尝试创建一个用于文本突出显示的内联印迹 我知道这个功能已经存在 https github com quilljs quill blob develop formats background js在羽毛笔中 但在我的实现中 我想根
  • PyCharm getitem 对带有数组的函数发出警告

    我收到来自 PyCharm 的代码检查警告 我理解这个逻辑 但我不清楚修复它的适当方法 假设我有以下示例函数 def get ydata xdata ydata xdata 2 for i in range len ydata print
  • 找出我的收藏中出现最多的值及其比例

    我已经尝试过使用 R 一点 目前我面临以下问题 我有一张桌子data其属性中存储了一些数值foo 现在 如果我想从中获取比例表 我可以使用以下命令 prop table table data foo 这对我有用并产生以下输出 这只是其中的一
  • 那么 Powershell PSC1 文件有什么特别之处呢?

    在我的 PowerShell 快捷方式上 我有以下内容 C WINDOWS system32 WindowsPowerShell v1 0 powershell exe psc C Program Files x86 VMware Infr
  • 如何在 SQL 中的数学运算符中使用别名?

    首先 如果 别名 用词错误 请纠正我 我正在谈论将列重命名为AS操作员 所以我尝试计算这样的平均值 SELECT users username AS player name COUNT AS total games SUM games po
  • http 服务器将如何处理 html5 web 套接字?

    我阅读了很多有关 HTML5 的内容 并且特别喜欢 Web 套接字 因为它们促进 Web 服务器和 Web 浏览器之间的双向通信 但我们一直在阅读有关 chrome opera firefox safari 为 html5 做准备的内容 哪
  • 如何在 iOS 中的 Google 地图上添加按钮?

    我是 iOS 编程新手 我已经下载了适用于 iOS 的谷歌地图 sdk 并按照他们网站上的说明进行操作 如此链接所示 https developers google com maps documentation ios start http