- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在努力将 GoogleMaps iOS SDK 集成到我的项目中,但我不断收到此错误:
'NSInternalInconsistencyException' 'An instance 0x7fea5e93e210 of class GMSMapView was deallocated while key value observers were still registered with it. Current observation info:
这是我的 View Controller 代码:
import UIKit
import GoogleMaps
class ViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
var locationManager = CLLocationManager()
var didFindMyLocation = false
let mapView = GMSMapView()
override func viewDidLoad() {
super.viewDidLoad()
let mapView = GMSMapView()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
let camera: GMSCameraPosition = GMSCameraPosition.cameraWithLatitude(37.61729,longitude: -122.38229, zoom: 18)
mapView.camera = camera
mapView.delegate = self
mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil)
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if !didFindMyLocation {
let myLocation: CLLocation = change![NSKeyValueChangeNewKey] as! CLLocation
mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom: 18.0)
mapView.settings.myLocationButton = true
didFindMyLocation = true
}
}
}
最佳答案
正如它所说:“键值观察者仍向其注册”,这实际上是在提示您没有注销 KVO 观察者。
从这个意义上说,KVO 有点像 NSNotification
- 如果您在 viewDidLoad:
中注册了一个观察者,您需要在其中删除观察者,例如, viewDidDisappear:
或 dealloc
。
在您的情况下,尝试添加 dealloc
函数并使用 removeObserver:forKeyPath:context:
取消订阅 KVO。在 mattt 的 KVO 文章中阅读更多信息 here .
关于ios - GoogleMaps iOS SDK GMSMapView 类解除分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957412/
当我创建新的 GMSMapView 时,它不会加载。我的项目中有其他 GMSMapViews 可以正确加载。我正在使用 Storyboard编辑器将 GMSMapView 的自定义子类分配给 UIVi
我正在开发一个不允许手动与 map 交互的应用程序。更改 map 的唯一方法是当用户朝一个方向移动时。因此,如果用户旋转手机会旋转,因此基于 iPhone 中的指南针, map 应自动旋转,而不是用户
我面临着一个非常不寻常的问题。位置管理器正在中断 GMSMapView 函数。当我评论我的位置管理器初始化代码时,GMSCamera 移动完美。但是当我取消注释位置管理器代码时,此代码不会移动相机位置
我正在添加我的 map View mapView_ = [[GMSMapView alloc]initWithFrame:_viewMapContainer.bounds]; mapView_.myL
我正在使用以下代码在自定义 UIView 中创建 GMSMapView 实例作为 subview GMSCameraPosition *camera = [GMSCameraPosition came
我在 XCode 上设计了以下布局: 布局按钮(取消、注册)固定在底部布局指南中。最上面是 3 个大小相同的 UIView,每个之间的垂直间距为 1px。 剩下的空间被mapView占用,它是一个UI
我正在尝试调用键盘在 UITextField 上键入。这就是我添加 UITextField 的方式: @implementation SOViewController{ GMSMapView *
在我的应用程序中,我正在使用 GMSMapView,我想更改跟踪模式。在 iOS MapKit 中,我可以将跟踪模式更改为 MKUserTrackingModeFollowWithHeading,但不
我需要在特定 View 中使用 GMSMapView。这里 viewForGMSMapView 是我的 UIView。我使用了以下代码。 let camera = GMSCameraPosition
代码 import UIKit import GooglePlaces import GoogleMaps class FirstViewController: UIViewContr
我正在添加自定义按钮并添加操作 CLLocationCoordinate2D target=CLLocationCoordinate2DMake(currentLocation.coordinate.
我尝试了所有google maps提供的动画方法。但是我无法为 map View 的缩放级别设置动画。我试过 mapView.animateToZoom(15)。还有 UIView.animateWi
我被卡住了。我希望有人能给我正确的输入! 我正在使用 GMSMapview 显示兴趣点 (GMSMarkers)。 目前我只是使用此代码(DEFAULT_ZOOM 是 15.f)将 map 置于当前
我的代码如下: /* Map */ mapView = GMSMapView() mapView.delegate = self mapView.mapType = .
我想知道是否可以将我的位置按钮图像从 GMSMapView 更改为自定义图像。 最佳答案 1) 知道框架位置按钮: for (UIView *object in self.mapView.sub
我需要在 GMSMapView 停止移动时获得回调。 我已经阅读了文档并且找到了“mapView:idleAtCameraPosition:”方法,但这并不是我想要的。这个方法被调用的太频繁了,不仅仅
我必须为我的 iPhone 项目使用 Google map ,我正在使用 GMSPolygon 绘制多边形,但我如何填充 map 上除多边形内部以外的所有地方。就像下图一样。 谢谢。 最佳答案 我试过
我正在使用谷歌地图使用 swift 请求 iOS 应用程序。我在 Storyboard中添加了 map (GMSMapView)并尝试像这样罗盘按钮 mapView.settings.compassB
我目前在我的 swift 应用程序中使用 GMSMapView,并且能源影响从未减少(如 CPU 使用率或内存使用率)。 有人遇到过这个问题吗? 使用谷歌地图 2.0.1 最佳答案 我自己找到了答案。
我目前在我的 View Controller 中有一个 UIView,我已在 Interface Builder 中将其更改为 GMSMapView,但没有任何显示,如下图所示: 这是我使用的代码
我是一名优秀的程序员,十分优秀!