使用 GoogleMaps 时,myLocationEnabled 快速更改为 isMyLocationEnabled

Posted

技术标签:

【中文标题】使用 GoogleMaps 时,myLocationEnabled 快速更改为 isMyLocationEnabled【英文标题】:myLocationEnabled changing to isMyLocationEnabled on swift when using GoogleMaps 【发布时间】:2017-04-09 02:37:34 【问题描述】:

我正在尝试获取用户当前位置以使用谷歌地图 API 显示。我已经为这个问题苦苦挣扎了好几个星期,并且当我在模拟器中更改位置时,代码运行但没有更新到当前位置。

我的代码在下面,在查看其他人的操作方式后,他们都有 mapView.myLocationEnabled = true 而对我来说,这会产生一个错误,提示“myLocationEnabled 已重命名为”isMylocationEnabled”。我看过一些最新的帖子(从 2 个月前开始),每个人都在使用 myLocationEnabled 似乎没有错误,为什么我会收到这个?这可能是我当前位置没有更新的原因吗?

import UIKit
import GoogleMaps

class FirstViewController: UIViewController, CLLocationManagerDelegate 


    @IBOutlet weak var mapView: GMSMapView!


    let locationManager = CLLocationManager()
    override func viewDidLoad() 
        super.viewDidLoad()
        locationManager.delegate = self
        mapView.settings.myLocationButton = true
        mapView.settings.compassButton = true
    
    override func viewDidAppear(_ animated: Bool) 
        locationManager.requestWhenInUseAuthorization()
    
    func locationManager(manager: CLLocationManager , didChangeAuthorizationStatus status: CLAuthorizationStatus) 
        if status == .authorizedWhenInUse 
            locationManager.startUpdatingLocation()


            mapView.isMyLocationEnabled = true

            mapView.settings.myLocationButton = true
        
    
    func locationManager(manager: CLLocationManager ,didUpdateLocations locations: [CLLocation]) 
        if let location = locations.first 

            mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)

            let marker = GMSMarker()
            marker.title = "Current Location"
            marker.map = mapView
            locationManager.stopUpdatingLocation()
        
    

【问题讨论】:

你在谷歌开发者控制台中创建了一个项目吗?顺便说一句,您应该更新您的旧帖子***.com/questions/40318101/… 或删除它,而不是创建一个具有相同问题的新帖子。这个raywenderlich.com/109888/google-maps-ios-sdk-tutorial 也会有帮助。 嘿,是的,我有。我的代表中有我的 API 密钥,GoogleMaps 确实显示,只是不显示当前位置。好的,对不起,我将删除旧帖子。这实际上是我最初遵循的教程,但没有迹象表明他有同样的问题。我还尝试了本教程appcoda.com/google-maps-api-tutorial 以及我在网上找到的其他教程。顺便说一句,'isMyLocationEnabled' 是一个 BOOL——这可能是问题所在吗?会不会是框架的问题?因为我手动下载了 GoogleMaps SDK,所以可能错过了什么? 【参考方案1】:

所以我终于解决了这个问题!基本上我用 GoogleMaps 和 GooglePlaces 更新了我现有的 Podfile,然后更新了 pod 以确保所有框架都正常工作。然后我用这段代码让我当前的位置工作

    import UIKit

    import GoogleMaps


    class FirstViewController: UIViewController, CLLocationManagerDelegate 


@IBOutlet weak var mapView: GMSMapView!
var locationManager = CLLocationManager()
var vwGMap = GMSMapView()


override func viewDidLoad() 
    super.viewDidLoad()
    let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: 22.300000, longitude: 70.783300, zoom: 10.0)
    vwGMap = GMSMapView.map(withFrame: self.view.frame, camera: camera)
    vwGMap.camera = camera

    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
    locationManager.distanceFilter = 500
    locationManager.requestWhenInUseAuthorization()
    locationManager.requestAlwaysAuthorization()
    locationManager.startUpdatingLocation()

    self.view = vwGMap
    

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) 

        if (status == CLAuthorizationStatus.authorizedWhenInUse)

        
            vwGMap.isMyLocationEnabled = true
        
    
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
        let newLocation = locations.last
        vwGMap.camera = GMSCameraPosition.camera(withTarget: newLocation!.coordinate, zoom: 15.0)
        vwGMap.settings.myLocationButton = true
        self.view = self.vwGMap
    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2DMake(newLocation!.coordinate.latitude, newLocation!.coordinate.longitude)
    marker.map = self.vwGMap
    

【讨论】:

以上是关于使用 GoogleMaps 时,myLocationEnabled 快速更改为 isMyLocationEnabled的主要内容,如果未能解决你的问题,请参考以下文章

未找到此类模块“GoogleMaps”,但已安装

如何在 GoogleMaps for iOS 中使用自定义标记进行标记聚类?

插件未定义(cordova-plugin-googlemaps)

当用户在 SwiftUI 中触摸 GoogleMaps 的标记时如何更改 UI 状态?

在测试中使用它时出现 Angular GoogleMaps 错误

GoogleMaps Flutter 插件 MissingPluginException