gpt4 book ai didi

ios - 使用 UItableviewCell 实现 Google map

转载 作者:行者123 更新时间:2023-11-28 08:17:01 24 4
gpt4 key购买 nike

我正在尝试在 UItableviewCell 组件中实现谷歌地图。我这样做的方法是在原型(prototype)单元格中定义一个 GMSMapView,然后使用我正在配置 map 单元格的 dequeueReusableCell 方法。但是,我尝试应用的任何更改都失败了(例如添加标记、相机、缩放等)。有人有关于这个问题的任何信息吗?

代码引用:

class UITenderInfoMapCell: UITableViewCell {

@IBOutlet weak var view: UIView!
@IBOutlet weak var subView: GMSMapView!

override func awakeFromNib() {

super.awakeFromNib()
self.initMap()

}



/**
Init blank map when initializing a MapCell, waypoints, directions, etc can be loaded later.
**/
func initMap() {

let camera = GMSCameraPosition.camera(withLatitude: 1.285, longitude: 103.848, zoom: 12)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
self.subView = mapView


}

最佳答案

执行以下步骤将 MapView 添加到 TableViewCell

  1. 在您的自定义 Tableviewcell 中获取一个 UIView,并将类名称命名为“GMSmapView”给该 UIView
  2. 确保连接 Mapview 的委托(delegate)方法。
  3. 在您的 ViewController 中导入“GoogleMaps”以及委托(delegate)“GMSMapViewDelegate”。
  4. 像这样为您创建的 TableViewCell 制作 MapView socket :
import UIKit

import GoogleMaps

class MapviewTableViewCell: UITableViewCell {


@IBOutlet weak var mapviewObj: GMSMapView!

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

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

// Configure the view for the selected state
}

}
  1. 在“cellForRowAt”中添加以下代码

            let cell = tableviewObj.dequeueReusableCell(withIdentifier: "cell") as! MapviewTableViewCell

    let marker = GMSMarker()

    let lat = Double("13.063754")
    let long = Double("80.24358699999993")
    marker.position = CLLocationCoordinate2DMake(lat!,long!)

    ///View for Marker
    let DynamicView = UIView(frame: CGRect(x:0, y:0, width:50, height:50))
    DynamicView.backgroundColor = UIColor.clear

    //Pin image view for Custom Marker
    let imageView = UIImageView()
    imageView.frame = CGRect(x:0, y:0, width:50, height:35)
    imageView.image = UIImage(named:"LocationPin")

    //Adding pin image to view for Custom Marker
    DynamicView.addSubview(imageView)

    UIGraphicsBeginImageContextWithOptions(DynamicView.frame.size, false, UIScreen.main.scale)
    DynamicView.layer.render(in: UIGraphicsGetCurrentContext()!)
    let imageConverted: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

    marker.icon = imageConverted
    marker.map = cell.mapviewObj

    cell.mapviewObj.camera = GMSCameraPosition.camera(withTarget: marker.position, zoom: 11)

    return cell

注意:我在此提供了一些额外的代码,以使用“DynamicView”添加您的自定义标记。如果你不 t want to add custom marker, you can skip those code. Also Don不要忘记从谷歌开发者帐户配置谷歌地图所需的设置,并将相应的 key 添加到您的应用程序委托(delegate)中,例如

let key = "keep you key here"
GMSServices.provideAPIKey(key)

关于ios - 使用 UItableviewCell 实现 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42338782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com