Google 为 iOS 映射 Places Picker - Swift 中的 GMSPlacePicker 出现但在动画结束时消失
Google maps Places Picker for iOS - GMSPlacePicker in Swift appearing but disappears when animation ends
我正在尝试将简单的 GMSPlacePicker 示例转换为 Swift
但是选择器会出现,但一旦从右到左的过渡完成,它就会立即消失。
// ViewController.swift
import UIKit
import CoreLocation
import GoogleMaps
class ViewController: UIViewController {
@IBAction func buttonPlacesPicker_TouchUpInside(sender: AnyObject) {
//-----------------------------------------------------------------------------------
var southWestSydney : CLLocationCoordinate2D = CLLocationCoordinate2DMake(-33.8659, 151.1953)
var northEastSydney : CLLocationCoordinate2D = CLLocationCoordinate2DMake(-33.8645, 151.1969)
var sydneyBounds : GMSCoordinateBounds = GMSCoordinateBounds(coordinate: southWestSydney, coordinate:northEastSydney)
//var config : GMSPlacePickerConfig = GMSPlacePickerConfig(viewport:sydneyBounds)
var config : GMSPlacePickerConfig = GMSPlacePickerConfig(viewport:nil)
//---------------------------------------------------------------------
var placePicker : GMSPlacePicker = GMSPlacePicker(config: config)
//typealias GMSPlaceResultCallback = (GMSPlace?, NSError?) -> Void
var error: NSError? = nil
var gmsPlace: GMSPlace? = nil
placePicker.pickPlaceWithCallback(){
(gmsPlace, error) -> Void in
if let error = error{
println("error:\(error)")
}else{
if let gmsPlace = gmsPlace{
if let formattedAddress = gmsPlace.formattedAddress{
println("formattedAddress:\r\(formattedAddress)")
}else{
println("gmsPlace.formattedAddress is nil")
}
}else{
println("gmsPlace is nil")
}
println("info")
}
}
}
}
我的应用已成功请求位置
我有一个 Google 地图的桥接头。
我没有使用 cocoa pods 安装框架
但我之前在 Obj-C 中使用过该框架
所以只需将 GoogleMaps.framework 拖到投影
和内部资源包
我添加了之前教程中的所有以下内容和链接器错误:
当我 运行 它时,我可以在采摘者地图中看到悉尼。
它从屏幕右侧过渡到左侧。
到达左侧后消失
我添加了 Reveal 应用程序,但无法离线查看选择器视图。
我的 GMS 服务 api 密钥是正确的,因为它是我在 obj-c 应用程序中用来显示地点选择器的密钥。
捆绑包 ID 正确。
我的 Swift 知识是 "I think I know it. I probably don't"
有什么想法吗?
您应该保留对 GMSPlacePicker 的引用。将其设为 属性 而不是局部变量。
已修复使其成为 ivar...DOH!
class ViewController: UIViewController {
var placePicker : GMSPlacePicker?
@IBAction func buttonPlacesPicker_TouchUpInside(sender: AnyObject) {
self.placePicker?.pickPlaceWithCallback(){
...
我正在尝试将简单的 GMSPlacePicker 示例转换为 Swift
但是选择器会出现,但一旦从右到左的过渡完成,它就会立即消失。
// ViewController.swift
import UIKit
import CoreLocation
import GoogleMaps
class ViewController: UIViewController {
@IBAction func buttonPlacesPicker_TouchUpInside(sender: AnyObject) {
//-----------------------------------------------------------------------------------
var southWestSydney : CLLocationCoordinate2D = CLLocationCoordinate2DMake(-33.8659, 151.1953)
var northEastSydney : CLLocationCoordinate2D = CLLocationCoordinate2DMake(-33.8645, 151.1969)
var sydneyBounds : GMSCoordinateBounds = GMSCoordinateBounds(coordinate: southWestSydney, coordinate:northEastSydney)
//var config : GMSPlacePickerConfig = GMSPlacePickerConfig(viewport:sydneyBounds)
var config : GMSPlacePickerConfig = GMSPlacePickerConfig(viewport:nil)
//---------------------------------------------------------------------
var placePicker : GMSPlacePicker = GMSPlacePicker(config: config)
//typealias GMSPlaceResultCallback = (GMSPlace?, NSError?) -> Void
var error: NSError? = nil
var gmsPlace: GMSPlace? = nil
placePicker.pickPlaceWithCallback(){
(gmsPlace, error) -> Void in
if let error = error{
println("error:\(error)")
}else{
if let gmsPlace = gmsPlace{
if let formattedAddress = gmsPlace.formattedAddress{
println("formattedAddress:\r\(formattedAddress)")
}else{
println("gmsPlace.formattedAddress is nil")
}
}else{
println("gmsPlace is nil")
}
println("info")
}
}
}
}
我的应用已成功请求位置
我有一个 Google 地图的桥接头。
我没有使用 cocoa pods 安装框架
但我之前在 Obj-C 中使用过该框架
所以只需将 GoogleMaps.framework 拖到投影 和内部资源包
我添加了之前教程中的所有以下内容和链接器错误:
当我 运行 它时,我可以在采摘者地图中看到悉尼。
它从屏幕右侧过渡到左侧。
到达左侧后消失
我添加了 Reveal 应用程序,但无法离线查看选择器视图。
我的 GMS 服务 api 密钥是正确的,因为它是我在 obj-c 应用程序中用来显示地点选择器的密钥。
捆绑包 ID 正确。
我的 Swift 知识是 "I think I know it. I probably don't"
有什么想法吗?
您应该保留对 GMSPlacePicker 的引用。将其设为 属性 而不是局部变量。
已修复使其成为 ivar...DOH!
class ViewController: UIViewController {
var placePicker : GMSPlacePicker?
@IBAction func buttonPlacesPicker_TouchUpInside(sender: AnyObject) {
self.placePicker?.pickPlaceWithCallback(){
...