谷歌地图无法在 iPhone 模拟器上运行
Posted
技术标签:
【中文标题】谷歌地图无法在 iPhone 模拟器上运行【英文标题】:Google Maps not working on iPhone simulator 【发布时间】:2012-12-10 00:48:10 【问题描述】:我已经逐步实现了“Getting the Google Maps SDK for ios”
最后模拟器运行正常,没有发现错误,但地图除了标记之外没有任何细节。
如图所示:
底部的输出也有这个消息:
2012-12-23 01:06:59.869 GogleMap[3680:c07] GMSZoomTableQuadTree 缺少 >tile 类型的根缩放表 (mapType: 10) 2012-12-23 01:07:00.042 GogleMap[3680:1b03] Google Maps SDK for iOS 版本:1.0.1.1154 2012-12-23 01:07:00.375 GogleMap[3680:c07] ClientParametersRequest 失败,3 次尝试 > 剩余。错误域=DASHConnectionError Code=100“操作无法完成。 (DASHConnectionError 错误 100。)"
请帮忙,提前谢谢。
【问题讨论】:
您是否尝试在实际设备上运行它以查看是否有任何作用? 嘿,您是如何按照这些步骤操作的?我在控制台申请了 API 密钥访问,除此之外没有任何响应,如步骤中给出的,您在哪里找到“Google Maps SDK for iOS”以在服务中启用它。 显示地图需要多长时间。 这对我有用***.com/a/37459488/4034301 【参考方案1】:已解决:我认为我们都在此过程中跳过了一个很小但非常重要的步骤。
要开始使用,请在 Google API 控制台中启用 Google Maps SDK for iOS 服务以及其他 Google API。
在Google APIs Console 中启用适用于 iOS 的 GoogleMap SDK 后,您的应用将在下次运行时正确加载图块。祝你好运!
【讨论】:
现在是 2019 年,同样的事情仍然发生,您在 ios SDK 的凭证页面上设置了所有内容,并且没有提醒您还必须启用 SDK【参考方案2】:@user1924208 我也有同样的问题。我不知疲倦地在互联网上搜索答案,不幸的是,我认为我们不走运。 Google API 控制台可能会向您显示 Google Maps v.3 的 API 密钥,它不是 Google Maps iOS API 密钥。因此,当您将其用作 API 密钥时,验证请求将始终失败。
似乎无论出于何种原因,他们都没有为 iOS 版本发布许多 API 密钥。令人沮丧的是,您只需要等到收到他们的电子邮件(不确定什么时候会......)。
您可以确认这一点,因为用任何随机字符串替换当前 API 密钥都会产生相同的结果。顺便说一句,这在我测试过的模拟器和真实设备上也产生了相同的结果。
更新
我刚收到一封来自 Google 地图的电子邮件,告诉我我的 API 密钥现已可用。我用 GMSServices 关闭了 MKMapKit,一切正常。似乎他们现在对发布 API 密钥感到更自在了,所以希望你很快就会得到你的。
【讨论】:
您是如何按照这些步骤操作的?我在控制台申请了 API 密钥访问,除此之外没有任何响应,如步骤中给出的,您在哪里找到“Google Maps SDK for iOS”以在服务中启用它。 我也没有找到“Google Maps SDK for iOS”键。当他们以访问权限与您联系时,这似乎是从您的 Google API 控制台解锁的东西。 是的..我也这么认为!..奇怪 来吧。是否真的需要将应用程序放置到应用程序商店。我只想了解 SDK。因此,我在注册表单中输入了应用程序名称:HelloWorld。是我收不到回复的原因吗?【参考方案3】:请注意,确保您还在“服务”标签中启用了“Google Maps SDK for iOS”。
在我意识到我只生成了一个 API 密钥但忘记启用该服务之前,我遇到了类似的错误。解决了我的问题。
SDKDemos[160:907] ClientParametersRequest failed, 0 attempts remaining (0 vs 5).
Error Domain=com.google.Maps.GMSDASHConnection Code=100
"The operation couldn’t be completed. (com.google.Maps.GMSDASHConnection error 100.)"
【讨论】:
【参考方案4】:我遇到了类似的问题,但我确信 API 密钥很好,因为 SDK 包中的示例项目使用该密钥 - 我在实际应用中使用的捆绑 ID 对。如果您的 API 密钥似乎无效,最新 (1.2) 版本的 sdk 实际上会注销警告。 它无法显示地图的原因是我没有在项目设置的目标摘要选项卡中填写内部版本号。事实证明,您绝对需要在 Info.plist 中设置 CFBundleVersion 才能使 google 地图正常工作,否则地图只会保持空白,不会显示错误或警告,甚至不会发出 Web 请求。
【讨论】:
我不得不更改内部版本号,即使它已经在里面了。然后它起作用了。任何。谢谢! 谢谢!这让我发疯了!我的信息列表中的 CFBundleVersion 没有正确填充。【参考方案5】:我有同样的问题。 我认为问题在于我的项目的“捆绑标识符”与我的 Google API 控制台中的捆绑标识符之一不同。
所以我为我的 Google API 控制台添加了更多捆绑标识符:从项目导航器中选择您的项目本身,然后选择您的应用程序的目标。在标签 Summary 中,记住 Bundle Identifier 中的字符串。
转到 Google API 控制台页面,在控制台中选择 API 访问窗格,找到 iOS 应用程序的密钥部分,选择编辑允许的 iOS 应用程序...并添加您在上面记得的包标识符。重新运行您的项目并完成!
【讨论】:
【参考方案6】:只需确保启用位置
模拟器选项 Features->Location->Apple
【讨论】:
【参考方案7】:我遇到了同样的问题,然后我去谷歌控制台并点击“生成新密钥”,新密钥工作了!
【讨论】:
【参考方案8】:确保你没有改变你的
[捆绑标识符]
为应用程序。它应该与您生成 API 密钥时使用的匹配。
【讨论】:
【参考方案9】:从另一个角度跟进:
在更高版本的 Google 地图框架中存在一个错误,如果应用在后台,则该错误会阻止地图被实例化/创建/添加到超级视图。
当您这样做时,生成的地图将显示为完全空白,而不是左下方的 Google 徽标。原因是操作系统不允许在后台进行 OpenGL 渲染。他们只需要在前景化后重新启动渲染器。
Google终于修复了这个问题(大约一年后),所以请升级到最新最好的版本。
如果您使用 Google for Business:
pod 'Google-Maps-iOS-SDK-for-Business', '~> 1.11.1'
此问题的重现是 here 旧版本。
视觉再现:
【讨论】:
免费版和商业版是否有不同的 SDK?我之所以问,是因为我使用我的个人帐户为我的公司启动了一个项目,直到购买批准了与 Google 的服务合同。一旦他们这样做了,我就得到了我们公司的密钥并将其放入应用程序中。在 sim 上一切正常,但在设备上我得到了棕色的死亡屏幕。我记录从 provideAPIKey 返回的布尔值,每次都是。捆绑包在控制台中是正确的。我可以使用路线和地理编码服务,但无法显示地图。 @PruitIgoe 是的,有针对普通客户和商业客户的不同 SDK,并且每个都有不同的网站来设置 谢谢,我终于明白了。我不得不说我对 Google 开发者控制台的 UI/UX 完全不感兴趣。它真的一点也不直观,只是浏览起来很痛苦。【参考方案10】:重要提示:如果您想在 iOS 设备上使用谷歌地图练习,只需下载 GoogleMaps.framework。
我在不知不觉中下载了 GoogleMapsM4B.framework 并遇到了诸如“您的密钥可能对您的捆绑包 ID 无效:com.company.example
”等问题
如果您想在您的项目中使用 GoogleMapsM4B.framework,那么 1.您应该在企业支持门户(Google 的网站)上请求支持 2.您必须在 Google 控制台网站中启用 Google Maps Mobile SDK for Work 而不是 Google Maps SDK for iOS。
如果您想使用 GoogleMaps.framework 而不是 GoogleMapsM4B(Maps for Business),则无需请求支持中心,您只需启用 Google Maps SDK 即可Google 控制台网站中的 iOS。
您可以找到适用于 iOS 的 Google Maps SDK 和适用于 Work(M4B) 的 Google Maps Mobile SDK 之间的主要区别。
并将 GoogleMaps/GoogleMaps.h 导入您的文件并将您的 api 密钥传递给以下方法:
[GMSServices provideAPIKey:@“Your API Key“];
(或)
如果您拥有有效的许可证,请下载 GoogleMapsM4B.framework 并将 GoogleMapsM4B/GoogleMaps.h 导入您的文件并将 api 传递给相同的方法 [GMSServices provideAPIKey:@“Your API Key“]
但我猜你可能只有在购买许可证后才能得到这个密钥。
所以我面临的主要问题是……我没有下载 GoogleMaps.framework,而是下载了 GoogleMapsM4B.framework 并添加到我的项目中。每次我运行我的项目时,它都会给我一个错误提示“您的密钥可能对您的捆绑 ID 无效:com.example.sampleapp”
现在我的项目运行正常。
【讨论】:
你拯救了我的一天!【参考方案11】:您似乎没有指定有效的 API 密钥。你有吗?
【讨论】:
【参考方案12】:此错误表示用于初始化 Google 地图的密钥无效:
[GMSServices provideAPIKey:@"YOUR_API_KEY"];
该密钥是由 Google 专门为 iOS SDK 颁发的(显然只有少数选定的); Google Maps SDK v2 和 v3 的密钥不适用于 Apple。
确认错误确实是由无效键引起的一种方法是显示图钉。 Pushpin 不需要有效的键,因此它将在空的地图视图对象上可见。对入门页面https://developers.google.com/maps/documentation/ios/start#add_a_map 中的示例进行编码应该会导致应用显示一个空的地图视图(背景为黄色,中心有一个图钉)。
保证大头针可见的最佳方法是对相机和标记使用完全相同的坐标,请参阅 sn-p:
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:43.65
longitude:-79.45
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
GMSMarkerOptions *markerOptions = [[GMSMarkerOptions alloc] init];
markerOptions.position = CLLocationCoordinate2DMake(43.65, -79.45);
markerOptions.title = @"Greater Toronto Area";
[mapView_ addMarkerWithOptions:markerOptions];
【讨论】:
【参考方案13】:另一个抬头! 确保您应用的捆绑包标识符与 Google API 控制台中“iOS 应用”字段中定义的捆绑包 ID 匹配。
【讨论】:
【参考方案14】:遇到同样的问题。当然,一切都做对了。 问题是您的 API 密钥需要一些时间才能开始工作(可能有关它的信息会通过 google 服务器传播,这意味着您最近的服务器尚不知道新的 API 密钥)。
所以在 API 密钥创建错误停止后的大约 5 分钟内,我拥有完全工作的 API 密钥。 (请注意,我没有收到任何来自 google 的电子邮件)。
【讨论】:
【参考方案15】:这帮助了我:(错误拼写 API 密钥,因为 XCode 最初返回错误,除非 API 被 IOS - ObjC Google Maps Api Key 包围
【讨论】:
【参考方案16】:我解决了这个问题如下。
-
转到 Google Maps API 控制台(旧)。
启用的服务是适用于 iOS 的 Google Maps SDK 和 Google Street View Image API。
我已禁用 Google Street View Image API。
然后,不再输出错误。
【讨论】:
【参考方案17】:对我来说,这是因为我的应用程序包标识符已更改。在为新的捆绑标识符获取新的 API 密钥后,它再次开始工作。
【讨论】:
【参考方案18】:首先要确保您的钥匙正确。然后检查您是否启用了适用于 iOS 的 Google Maps SDK。比在设备上运行应用程序,而不是在模拟器上运行。
【讨论】:
【参考方案19】:尽量不要将 API Key 保存在任何常量上。直接传值。如果它不起作用,请尝试重新生成 API 密钥映射肯定会起作用
MapServices.ProvideAPIKey ("AIzaSyAnxfhuAwEqdVhQpoUkGFZpsBukOSXVFr0");
编码愉快 :)
【讨论】:
【参考方案20】:现在 Apple 移除 Google 地图并添加 Apple 地图。
检查以下事项:
减少地图视图的缩放。
使用什么版本的 iOS?如果您使用的是 iOS 6,则谷歌地图无法使用 Apple 地图必须可以使用。
有时模拟器不支持某些核心功能,请检查设备的功能。
确保必须设置委托和数据源。
谢谢。
【讨论】:
我使用的是 iOS 6.0 模拟器,谷歌地图在他们的应用程序中运行良好,许多不同的应用程序以及 iOS 6.0,所以这不是重点。我会继续努力找出问题所在。我可能会再次执行这些步骤,看看会发生什么。以上是关于谷歌地图无法在 iPhone 模拟器上运行的主要内容,如果未能解决你的问题,请参考以下文章