适用于 iOS 的 Google 地图 API myLocationEnabled 无法正常工作

2024-01-27

我正在尝试使用 Google Maps API,但在获取用户位置时遇到问题。观察到的值似乎永远不会改变,因为observeValueForKeyPath 从未被调用。
注意:我正在运行 Xcode 6-Beta 5 和 iOS 8 beta(代码在 Swift 中)

override func viewDidLoad() {
    super.viewDidLoad()
    var camera:GMSCameraPosition? = nil
    mapView_ = GMSMapView.mapWithFrame(CGRectZero, camera:camera);
    mapView_!.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.fromRaw(0x01)!, context: nil);
    camera = GMSCameraPosition.cameraWithTarget(mapView_!.myLocation.coordinate, zoom: 6);
    mapView_!.camera = camera;


    self.view = mapView_;
    dispatch_async(dispatch_get_main_queue(), {
        mapView_!.myLocationEnabled = true;
        });

}
override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: [NSObject : AnyObject]!, context: UnsafeMutablePointer<()>) {
    if (keyPath == "myLocation" && object.isKindOfClass(GMSMapView)) {
        mapView_!.animateToCameraPosition(GMSCameraPosition.cameraWithTarget(mapView_!.myLocation.coordinate, zoom: 6));
    }

}

截至目前,Google Maps iOS SDK 尚未更新为支持 iOS 8。因此,为了使用位置功能,您需要自行进行 iOS 8 位置授权。

您可以通过实例化来做到这一点CLLocationManager对象并执行-requestWhenInUseAuthorization or -requestAlwaysAuthorization关于这一点。您需要在设置之前执行此操作myLocationEnabled to YES.

请务必在您的文件中包含必要的密钥Info.plist文件。如果您想使用始终授权(如下面的代码示例所示),请提供NSLocationAlwaysUsageDescription,或者如果您想在使用时授权,NSLocationWhenInUseUsageDescription。其中之一是必需的,如果您不提供,位置功能将无法工作。

这是 Obj-C 中的示例。抱歉,我还没有掌握所有 Swift 的最新内容。 :)

// Rather than setting -myLocationEnabled to YES directly,
// call this method:

- (void)enableMyLocation
{
    CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

    if (status == kCLAuthorizationStatusNotDetermined)
        [self requestLocationAuthorization];
    else if (status == kCLAuthorizationStatusDenied || status == kCLAuthorizationStatusRestricted)
        return; // we weren't allowed to show the user's location so don't enable
    else
        [self.view setMyLocationEnabled:YES];
}

// Ask the CLLocationManager for location authorization,
// and be sure to retain the manager somewhere on the class

- (void)requestLocationAuthorization
{
    _locationAuthorizationManager = [[CLLocationManager alloc] init];
    _locationAuthorizationManager.delegate = self;

    [_locationAuthorizationManager requestAlwaysAuthorization];
}

// Handle the authorization callback. This is usually
// called on a background thread so go back to main.

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
    if (status != kCLAuthorizationStatusNotDetermined) {
        [self performSelectorOnMainThread:@selector(enableMyLocation) withObject:nil waitUntilDone:[NSThread isMainThread]];

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

适用于 iOS 的 Google 地图 API myLocationEnabled 无法正常工作 的相关文章

  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 无法从 iOS 中的框架访问 .nib(XIB) 文件

    我已经从现有的代码库中创建了一个框架 并尝试在新的代码库中使用它 这很好用 但是当我尝试访问属于我的框架包的一部分的 nib 文件时 我的应用程序崩溃了 这是我用来访问视图控制器 XIB 文件的代码 testViewController c
  • 如何在 Swift 中将文件名与文件扩展名分开?

    给定包中文件的名称 我想将该文件加载到我的 Swift 应用程序中 所以我需要使用这个方法 let soundURL NSBundle mainBundle URLForResource fname withExtension ext 无论
  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • 如何开始复杂级别的跨平台移动应用开发? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何测试 google.maps.Geocoder?

    你好 我正在尝试编写一个 简单 测试来检查反应类组件状态更改 具体来说 我正在测试如果 Google 成功对我发送的某些字符串 地址 进行地理编码 lat 纬度 和 lng 经度 状态是否会发生变化 这是我想测试的示例 i e the la
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • 从 UIPickerView 的选定行设置 UIButton 的标题

    详细场景是这样的 我使用循环创建 10 个按钮并设置 0 9 的标签 点击每个按钮时 我将调用 UIPickerView 在其中加载来自不同数组的数据 到这里我就得到了预期的结果 但我希望 pickerView 中选定的行应设置为相应按钮的
  • React-native-vision-camera无法访问后面的普通摄像头

    我正在尝试在 iPhone 11 Pro 上使用 普通 相机 我使用反应本机视觉相机 当我运行这段代码时 const devices useCameraDevices const deviceBack devices back consol
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • ios swift parse:从 3 个类收集数据

    我有这样的结构 User CardSet 带有指向 User objectId 的指针 user 和 col name 带有点 cards 的卡片到 Card Set objectId 和列 name 我想选择所有卡数据 包括当前用户的卡集
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • watchOS 错误:控制器接口描述中的未知属性

    我将 WKInterfacePicker 添加到情节提要中 并将其连接到界面控制器中的 IBOutlet 运行应用程序时 它在控制台中显示一条错误消息 控制器的接口描述 watchPicker 中的未知属性 Code interface I
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 使用 MapKit 的地形和卫星视图

    我是 Mapkit View 的新手 当我给出没有目的地的纬度和经度时 我想显示 MapKit中是否可以通过地形 卫星视图来显示地图 有教程链接吗 我看过一些访问 Google 地图 API html 文件 的示例 有必要吗 或者您可以通过
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar

随机推荐

  • asp.net MVC:本地化

    我的目标语言在 Session lang 中 它是 en 或 it 我已将其添加到 Site master 中
  • Java 中的线程是否依赖于平台?

    很明显 操作系统调度 线程算法对 Java 线程有影响 但是 我们可以有把握地说线程依赖于操作系统 机器吗 如果是这样的话 那么 Java 平台不依赖吗 是的 Java 中线程调度的细节取决于 JVM 实现 并且 通常 也取决于操作系统实现
  • 是否可以将 Stripe Connect 与 Meteor.js 一起使用?

    有人成功集成了 Stripe Connect 和 Meteor js 吗 我已经使用 Stripe Checkout 通过 Meteor 包向买家收取付款 但我现在正在研究建立一个买家和卖家可以直接进行交易的市场 我还没有找到任何适用于 M
  • 棘手的 I一次性问题

    我试图抽象 封装以下代码 以便所有客户端调用都不需要重复此代码 例如 这是从视图模型 MVVM 到 WCF 服务的调用 using var channelFactory new WcfChannelFactory
  • 在没有选择器错误的情况下使用包

    我正在使用这个名为的配置库Viper https github com spf13 viper 在我的主要内容中 我有这个 viper SetConfigName development viper AddConfigPath config
  • Try-catch 创建无限循环[重复]

    这个问题在这里已经有答案了 我需要能够接受用户输入 直到输入大于初始价格 但我还需要使其稳健 以便用户无法通过输入双精度 整数以外的内容来破坏程序 如果用户确实输入了 double int 以外的内容 问题在于它创建了一个循环并重复 请输入
  • WPF // MahApps.Metro // Caliburn.Micro // 弹出控件 // HeaderedContentControl

    自从 MahApps Metro 1 5 0 发生变化以来 Flyout 的基本元素已从ContentControl to HeaderContentControl 现在使用 Caliburn Micro 和 MVVM 方法this htt
  • Android 原生代码:将 Surface 分配给特定显示器

    我正在寻找一种将 Surface 本机窗口 对象分配给显示器的方法 以便提交到该本机窗口的缓冲区将渲染到该特定显示器而不是主显示器 我想用本机代码来做到这一点 在Java中 可以通过使用Presentation API来完成 在本机代码中我
  • Mockito:如何测试构造函数被调用?

    我正在使用 Mockito 来测试 Java 应用程序中的方法 如何测试构造函数是否被调用过一次 我正在尝试进行类似的验证 verify myClass times 1 doSomething anotherObject 但我无法验证构造函
  • python 通过列表创建一个包含一行的数据框

    在Python中 假设我有一个列表 1 2 3 100 我想使用这个列表创建一个数据框 其中有一行 行值是列表 最快且优雅的方法是什么 将列表作为列表参数传递给data In 11 l range 1 100 pd DataFrame da
  • 在 Django 中通过哈希有效保存文件

    我正在开发一个 Django 项目 我希望用户能够做的是上传文件 通过表单 然后将文件本地保存到自定义路径并使用自定义文件名 其哈希值 我能想到的唯一解决方案是使用我正在使用的 FileField 的 upload to 参数 这意味着什么
  • 找不到与给定名称匹配的资源(在“title”处,值为“@string/action_settings”)

    所以我最近 就像今天最近 开始尝试在eclipse中工作 我一直在关注 Android 开发者初学者课程 到目前为止一切都很顺利 我已经开始构建一个简单的用户界面 http developer android com training ba
  • 无法找到软件包 openssl-dev

    我正在尝试使用 Ubuntu 18 04 在 Linux 上安装 ROOT CERN 软件包 每当我进入先决条件下载时 都使用以下命令 sudo apt get install dpkg dev cmake g gcc binutils l
  • 接口继承一致性

    首先看这段代码 class Program static void Main string args var x Base new Derived IMethod x DoWork Console ReadKey interface IMe
  • 背包0-1个定量

    我正在编写具有多个约束的背包 0 1 的变体 除了重量约束之外 我还有数量约束 但在本例中 我想解决背包问题 因为我的背包中需要恰好有 n 件物品 且重量小于或等于 W 目前正在为简单的 0 1 案例实现动态编程 ruby 解决方案 基于
  • 身份验证:JWT 使用与会话

    在身份验证等情况下 使用 JWT 相对于会话有什么优势 它是作为独立方法使用还是在会话中使用 JWT 本身并没有使用 会话 的优势 JWT 提供了一种在客户端维护会话状态的方法 而不是在服务器上进行维护 人们在问这个问题时通常的意思是 使用
  • file.slim.js 中的 slim 是什么

    请原谅我的无知 但我刚刚使用 npm 安装了 jQuery 并且在 jQuery 文件之间有一个名为jquery slim js 什么是slim 我知道min代表缩小但苗条对我来说是新的 顺便说一句我很确定slim不像min因为还有另一个文
  • Bash 条件:如何使用“and”表达式? (如果 [ ! -z $VAR && -e $VAR ])

    我想我不清楚如何进行 和 测试 我想确保存在一个可以很好地工作的论点 e VAR 但事实证明 在空字符串上也计算为 true 这是我不想要的 我如何将它们 和 在一起 或者是否有另一个一元测试可以实现我想要的 if z var e var
  • Julia 中的复制和深复制有什么区别?

    我试图理解之间的区别copy and deepcopy 在朱莉娅 根据我读到的内容朱莉娅文档 https docs julialang org en v1 base base Base copy这好像是deepcopy 复制这些值 然后创建
  • 适用于 iOS 的 Google 地图 API myLocationEnabled 无法正常工作

    我正在尝试使用 Google Maps API 但在获取用户位置时遇到问题 观察到的值似乎永远不会改变 因为observeValueForKeyPath 从未被调用 注意 我正在运行 Xcode 6 Beta 5 和 iOS 8 beta