Google Maps iOS SDK不会在tableViewCell中更新

时间:2016-06-08 08:38:35

标签: ios swift google-maps uitableview google-maps-sdk-ios

我在普通视图控制器上运行谷歌地图ios SDK,它运行完美,它甚至显示当前位置但我决定放入tableViewCell,下面的代码将显示如何

import UIKit
import GoogleMaps

class GMapTableViewCell: UITableViewCell, GMSMapViewDelegate  {

    let locationManager = CLLocationManager()

    @IBOutlet var mapView: GMSMapView!
    override func awakeFromNib() {
        super.awakeFromNib()
    }


    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }



}


extension GMapTableViewCell: CLLocationManagerDelegate {

    func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

        if status == .AuthorizedWhenInUse {
            locationManager.startUpdatingLocation()
            mapView.myLocationEnabled = 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)
            locationManager.stopUpdatingLocation()

        }
    }
}

此代码的作用只是添加Google地图delegate并扩展CLLocationManagerDelegate。在扩展程序中,它应该更新设备的当前位置,再次在正常UIView中完美运行,但不在此处。

tableView中的代码

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


            let reuseIdentifier = "maps"
            let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! GMapTableViewCell
            // I inherit both GMSMapViewDelegate, CLLocationManagerDelegate, for tableView 
            cell.locationManager.delegate = self
            cell.locationManager.requestAlwaysAuthorization()
            cell.locationManager.requestWhenInUseAuthorization()
            cell.mapView.delegate = self
            cell.mapView.myLocationEnabled = true
            cell.mapView.settings.myLocationButton = true

            return cell
    }

我不知道我做错了什么

1 个答案:

答案 0 :(得分:0)

我现在有同样的问题,无法在UITableViewCell内放置地图的任何标记。

我发现,只有在单元格的UITableViewCell方法中调用Google Maps的方法时,Google Maps才能在awakeFromNib中起作用。

我没有弄清楚为什么,但是现在才知道。