我在普通视图控制器上运行谷歌地图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
}
我不知道我做错了什么
答案 0 :(得分:0)
我现在有同样的问题,无法在UITableViewCell
内放置地图的任何标记。
我发现,只有在单元格的UITableViewCell
方法中调用Google Maps的方法时,Google Maps才能在awakeFromNib
中起作用。
我没有弄清楚为什么,但是现在才知道。