我想在我的应用中的Googlemaps上添加多个标记。无法在GSMapView中添加多个标记xcode Swift 3
在viewController下viewDidLoad我能够加载地图和一个标记。
override func viewDidLoad() {
super.viewDidLoad()
title = NSLocalizedString("section_map", comment: "test")
let camera = GMSCameraPosition.camera(withLatitude: 48.7784, longitude:9.18121, zoom: 12)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
view = mapView
mapView.settings.myLocationButton = true
mapView.delegate = self
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: 48.7784,longitude: 9.18121)
marker.title = "title"
marker.snippet = "snipple"
marker.icon = UIImage(named:"pin_you")
marker.map = mapView
mapData()
}
它调用属于MapData(),并从那里是被解析setPin被调用来设置的销,未示出的标记
func setPin(){
DispatchQueue.main.async {
for item in self.mapItems {
print (" \(item.name) \(item.marker) \(item.latitude) \(item.longitude)")
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: item.latitude,longitude: item.longitude)
marker.title = item.name
marker.snippet = item.fulladdress
var iconImage: String
switch (item.marker){
case 1:
iconImage = "pin_silver"
case 2:
iconImage = "pin_blue"
case 3:
iconImage = "pin_gold"
case 6:
iconImage = "pin_you"
default:
iconImage = "pin_silver"
}
marker.icon = UIImage(named:iconImage)
marker.map = self.mapView
}
}
}
后生成 JSON文件。
在self.mapItems项打印显示
Position number A 1 48.76947562 9.15440351
Position number B 1 48.75716485 9.17081058
Position number C 1 48.81191625 9.22752149
Position number D 2 48.81192516 9.22766708
这意味着所有适当的数据是可用的。 但是,映射在viewDidLoad中有一个引脚 函数setPin中的标记未显示或未设置。
是否有人有想法?
你能告诉我 self.mapView 它在哪里宣布? –
你可以请交叉检查self.mapView是否正确初始化。 我看到你在本地下面这样初始化: - 让MapView的= GMSMapView.map(withFrame:.zero,摄像头:摄像头) 并且必须有viewDidLoad中的功能外,在顶部的地图视图对象。 该特定的地图对象需要进行初始化和正确配置。 –
@Manish Pathak.I在mapViewController后面有这个:UIViewController {(at)IBOutlet weak var mapView:GMSMapView! – Charley57