Google tableView 中的地图

Google Map in tableView

我在使用 swift 在 table 视图单元格中显示 google 地图时遇到问题。我想基于此显示签到(纬度和经度) 我想在 table 视图中显示 google 地图。如果没有可用位置,我将从服务器获取纬度和经度,这意味着我将得到空值。所以,在一种情况下,我是正确的,但是在重新加载顶层时,我得到的地图何时何地的纬度和经度也为空。请指导我。

地图视图的实例化成本很高。即使在使用 dequeueReusableCellWithIdentifier 时,它仍然会因大量项目而占用大量资源。

我相信使用一种方法从您的 longitude/latitude 组合生成静态地图图像是您最好的选择。

您可以看一下 here,您可以了解如何轻松构建对许多流行地图提供商的 API 调用,例如 Google 静态图像地图,例如:

http://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=13&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true

另外值得一提的是,其中一些提供商可能有限制(例如 Google 在高流量的情况下可能需要 API 密钥)。所以在研究之后明智地选择。

看来您面临两个问题

1) 已经提到了一个"Map appears even when data is nil"

2)性能问题(这里没有提到)

第一个是由于信元出列。当您重新加载 table 时,该单元格将被重复使用(不再创建)。

当您return您的单元格行在

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)

具有地图视图的单元格可能会显示 return,这就是为什么您在那里显示不需要的地图的原因。你应该把它设为 nil 以防止这种情况发生。

2:

就性能而言,在每个单元格中显示地图视图并不是正确的方法。另一种方法是从地图中制作图像 url

使用这个

let mapUrl: String = NSURL(string:"YourMapURL")

let mapImage = UIImage.imageWithData(NSData.dataWithContentsOfURL(mapUrl))
    let latitude:Double = 17.3850
    let longitude:Double = 78.4867

    let imageURL = NSURL(string: "http://maps.googleapis.com/maps/api/staticmap?center=\(latitude),\(longitude)&zoom=12&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true")

    let imagedData = NSData(contentsOfURL: imageURL!)!

    staticMapImgView.image = UIImage(data: imagedData)