Google tableView 中的地图
Google Map in tableView
我在使用 swift 在 table 视图单元格中显示 google 地图时遇到问题。我想基于此显示签到(纬度和经度) 我想在 table 视图中显示 google 地图。如果没有可用位置,我将从服务器获取纬度和经度,这意味着我将得到空值。所以,在一种情况下,我是正确的,但是在重新加载顶层时,我得到的地图何时何地的纬度和经度也为空。请指导我。
地图视图的实例化成本很高。即使在使用 dequeueReusableCellWithIdentifier
时,它仍然会因大量项目而占用大量资源。
我相信使用一种方法从您的 longitude/latitude 组合生成静态地图图像是您最好的选择。
您可以看一下 here,您可以了解如何轻松构建对许多流行地图提供商的 API 调用,例如 Google 静态图像地图,例如:
另外值得一提的是,其中一些提供商可能有限制(例如 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)
我在使用 swift 在 table 视图单元格中显示 google 地图时遇到问题。我想基于此显示签到(纬度和经度) 我想在 table 视图中显示 google 地图。如果没有可用位置,我将从服务器获取纬度和经度,这意味着我将得到空值。所以,在一种情况下,我是正确的,但是在重新加载顶层时,我得到的地图何时何地的纬度和经度也为空。请指导我。
地图视图的实例化成本很高。即使在使用 dequeueReusableCellWithIdentifier
时,它仍然会因大量项目而占用大量资源。
我相信使用一种方法从您的 longitude/latitude 组合生成静态地图图像是您最好的选择。
您可以看一下 here,您可以了解如何轻松构建对许多流行地图提供商的 API 调用,例如 Google 静态图像地图,例如:
另外值得一提的是,其中一些提供商可能有限制(例如 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)