未启用 iOS 版 Places API
Posted
技术标签:
【中文标题】未启用 iOS 版 Places API【英文标题】:The Places API for iOS is not enabled 【发布时间】:2016-10-06 18:55:48 【问题描述】:我正在尝试将当前用户位置上传到 Parse,但是我无法检索当前用户位置。我正在按照这里的教程进行操作,并直接从那里复制了所有必要的代码,但是我收到了错误:当前位置错误:操作无法完成。。请参阅开发者指南 (https://developers.google.com/places/ios/start),了解如何启用 iOS 版 Google Places API。
下面是我的以下viewdidload以及上传功能。
@IBOutlet weak var viewMap: GMSMapView!
var placesClient: GMSPlacesClient?
override func viewDidLoad()
super.viewDidLoad()
placesClient = GMSPlacesClient()
let testObject = PFObject(className: "TestObject")
testObject["foo"] = "bar"
testObject.saveInBackgroundWithBlock (success: Bool, error: NSError?) -> Void in
print("Object has been saved.")
let camera = GMSCameraPosition.cameraWithLatitude(33.600727, longitude: -117.900840, zoom: 16.9)
viewMap.camera = camera
viewMap.myLocationEnabled = true
viewMap.settings.myLocationButton = true
let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(33.600727, -117.900840)
marker.title = "Newport Beach"
marker.snippet = "California"
marker.map = viewMap
// Do any additional setup after loading the view, typically from a nib.
Upload()
var gmsPlace : GMSPlace?
var gpsCoordinates : String?
func Upload()
// var place : GMSPlace
var placesClient = GMSPlacesClient.sharedClient()
placesClient.currentPlaceWithCallback (placeLikelihoods, error) -> Void in
guard error == nil else
print("Current Place error: \(error!.localizedDescription)")
return
var place : GMSPlace
if let placeLikelihoods = placeLikelihoods
for likelihood in placeLikelihoods.likelihoods
place = likelihood.place
print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
print("Current Place address \(place.formattedAddress)")
print("Current Place attributions \(place.attributions)")
print("Current PlaceID \(place.placeID)")
self.gpsCoordinates = (place.placeID)
print(self.path)
var videodata: NSData
videodata = (NSData.dataWithContentsOfMappedFile(self.path!) as? NSData)!
let file = PFFile(name:"upload.mp4", data:videodata)
let uploadedVideo = PFObject(className:"UploadedVideo")
uploadedVideo["GPS"] = self.gpsCoordinates
uploadedVideo["VideoFile"] = file
uploadedVideo.saveInBackground()
file!.saveInBackgroundWithBlock (success: Bool, error: NSError?) -> Void in print("File has been saved")
【问题讨论】:
您是否对 info.plist 文件进行了必要的更改? 您是否从 google 的控制台启用了 google place api? 【参考方案1】:按照这些步骤在 Google Developers Console 上的项目中启用 Google Places API for iOS 和适用于 iOS 的 Google Maps SDK。如果您的项目还没有 iOS 密钥(一种 API 密钥),这些说明还可以帮助您创建新的 API 密钥。
转到 Google Developers Console。 创建或选择一个项目。 点击继续以启用 iOS 版 Google Places API 和 iOS 版 Google Maps SDK。 在凭据页面上,获取 iOS 密钥并设置 API 凭据。注意:如果您有现有的 iOS 密钥,则可以使用该密钥。您可以对同一项目中的任何 iOS 应用程序使用相同的密钥。 在出现提示时输入您的应用程序包标识符。例如:com.example.hello-places。点击创建。您的新 iOS 密钥将出现在您项目的 API 密钥列表中。 API 密钥是一串字符,如下所示:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
注意: 您需要在 Google 开发者控制台中启用地图服务。在新布局中,选择左侧列中的 APIs & auth 部分和 APIs 子项。接下来,在右侧通过单击关闭按钮启用 Maps SDK for iOS。
要查找设备当前所在的本地企业或其他地方,请致电GMSPlacesClient currentPlaceWithCallback:
。包含一个回调方法来处理结果。
以下代码示例检索设备最有可能位于的地点列表,并记录每个地点的名称、可能性和其他详细信息。
placesClient.currentPlaceWithCallback( (placeLikelihoods, error) -> Void in
guard error == nil else
print("Current Place error: \(error!.localizedDescription)")
return
if let placeLikelihoods = placeLikelihoods
for likelihood in placeLikelihoods.likelihoods
let place = likelihood.place
print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
print("Current Place address \(place.formattedAddress)")
print("Current Place attributions \(place.attributions)")
print("Current PlaceID \(place.placeID)")
)
这是一个相关的 SO 票,讨论如何获取当前位置:Get User's Current Location / Coordinates
【讨论】:
我已经完成了所有这些,但我仍然得到“iOS 的 Places API 未启用”。 API 肯定是启用的。它是为 iOS 设置的。不知道该怎么办。 我在这里遇到了同样的问题.. Places API 已启用,但仍然与您遇到的错误相同。我被卡住了 我已经从控制台启用了 placesAPI,但我仍然收到此错误 NSLocalizedDescription=Places SDK for iOS 之前没有在项目 110476576428 中使用过,或者它已被禁用。如果有人有解决方案,请在这里分享@OliverDixon 我已经从控制台启用了 placesAPI,但我仍然收到此错误 NSLocalizedDescription=Places SDK for iOS 之前没有在项目 110476576428 中使用过,或者它已被禁用。如果有人有解决方案,请在此处分享或发布答案。 @mehmetsen80 看起来SDK for iOS的地方有一个错误:-|使用密钥进行香草 GET 请求。所以我不再使用 SDK。【参考方案2】:大多数情况下,您使用的是旧的 sdk 版本,请尝试升级。
注意:iOS 版 Places SDK 2.7.0 版已于 2019 年 1 月 29 日弃用,并将于 2019 年 7 月 29 日关闭。iOS 版 Places SDK 的新版本现已推出。我们建议尽快更新到新版本。有关详细信息,请参阅迁移指南。
pod ‘GooglePlaces’, ‘= 3.1.0’
pod ‘GooglePlacePicker’, ‘= 3.1.0’
pod ‘GoogleMaps’, ‘= 3.1.0’
【讨论】:
好人!我也在寻找同样的东西,该死,这行得通。【参考方案3】:当我在 pod 文件上将 GooglePlaces、GooglePlacePicker 和 GoogleMaps SDK 从 2.7.0 升级到 3.0.3 时,我的工作正常
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'ProjectName' do
pod 'GooglePlaces', '= 3.0.3'
pod 'GooglePlacePicker', '= 3.0.3'
pod 'GoogleMaps', '= 3.0.3'
end
$ pod update
因此,如果您确定已经在 Google 控制台上启用了 Google Places API,那么更新 pod 文件中的版本可能会有所帮助。
【讨论】:
@AbiramiBala 当您降级并声明此处确实存在的东西时,请三思。转到cocoapods.org,然后输入 Google Place,您将看到 Google Place Picker、GooglePlaces、Google Maps 的所有 3.0.3 版本 但是当我尝试通过“pod update”进行更新时,它只会更新到 2.7。当我尝试像您的代码一样更新 pod 时,它会出现错误,例如 -> CocoaPods 找不到 pod “GoogleMaps”的兼容版本:在 Podfile:GoogleMaps (= 3.0.3)。注意:我没有投反对票 @AbiramiBala 确保你也更新你的 pod.. sudo gem install cocoapods 再次更新同样的错误,cocoapods 无法兼容谷歌地图的版本。在你回答之前检查两次......! @AbiramiBala 你在降低我的回答,我仍然试图给你选择,那么你仍然在讽刺。祝你好运。【参考方案4】:这是 GooglePlaces 2.5.0 版本的问题。
我没有更新我的本地 pod 存储库,所以默认版本是 2.5.0。运行pod repo update
后,3.0.3 版本运行。
【讨论】:
【参考方案5】:转到https://console.cloud.google.com/apis/library
(确保您在正确的项目上,在左上角列出)
搜索并选择:“Places SDK for iOS”。
点击“启用”按钮。
【讨论】:
以上是关于未启用 iOS 版 Places API的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 版 Google Places API 中查找当前用户位置
适用于 android 的 Google 地图和 Places SDK 在发行版 APK 中不工作
android studio log errr Places API for Android 似乎没有为您的应用启用。它打开和关闭