如何在 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 地图上添加按钮? 的相关文章

  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 在 Interface Builder 中调整控件的大小以适合其容器

    假设我有一个分割视图 我想用表视图填充其中的一半 我认为这是一个相当常见的用例 有什么方法可以告诉表视图调整自身大小以适应分割视图 还是我真的必须手动调整它的大小 我已经这样做了 就像乔恩 赫斯首先提到的那样 假设您使用的是 Interfa
  • iOS 开发: [[self navigationController] viewControllers]; 有哪些原因?会返回零吗?

    以下语句返回零 NSArray viewControllersInNavStack self navigationController viewControllers 这个语句是在导航堆栈中大约四层深度的视图控制器中调用的 所以我不明白它如
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • iOS 中的等宽字体是什么?

    我想要在我的 iOS 应用程序中为 UILabel 使用等宽字体 不幸的是 我找不到一个 甚至 美国打字机 实际上也不是等宽的 XCode 中可用的等宽字体是什么 iOS 等宽字体 Courier Courier Bold Courier
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • iPhone 标签栏上的未读计数

    在 Cocoa Touch 上实现 TabBar 上图标的未读计数的最佳方法是什么 我想模仿 SMS 或邮件应用程序的行为 向我的应用程序的用户显示未读消息计数 并使用包含数字的红点 您正在寻找的属性称为徽章 您可以通过执行以下操作来设置它
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • 具有多种自定义单元格类型的 RxSwift 表视图

    我想知道是否有任何代码示例RxSwift当我可以在一个表视图中使用多个自定义单元格时 例如 我有两个部分 第一部分有 10 个单元格 类型为CellWithImage标识符和第二部分有 10 个带有类型的单元格CellWithVideo标识
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • 如何使导航栏透明并淡出,就像 iPhone 中的照片应用程序一样

    我是 iPhone 编程新手 有人可以帮我吗 我想在iPhone中开发一个类似照片应用程序的应用程序 如何使导航栏和工具栏透明并淡出 就像 iPhone 中的照片应用程序一样 感谢你 UINavigationBar继承自UIView 所以你
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • 如何在 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