我想在我的應用中的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