【发布时间】:2017-12-11 19:58:57
【问题描述】:
我正在尝试在我的应用中的 Googlemaps 上添加多个标记。
在 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() 并从那里生成 json 文件 解析后调用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
}
}
}
引脚未显示。
for item in 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 是否已正确初始化。我看到你已经在下面进行了本地初始化:- let mapView = GMSMapView.map(withFrame: .zero, camera: camera) 你必须在顶部有一个 viewDidLoad 函数之外的地图视图对象。该特定地图对象需要正确初始化和配置。
-
@Manish Pathak。我在 mapViewController: UIViewController { (at)IBOutlet weak var mapView: GMSMapView!
-
mapView = GMSMapView.map(withFrame: .zero, camera: camera) remove let in view 为这个初始化加载了
-
您不必在视图中再次创建 mapview 对象,加载方法只是从它们中删除 let
标签: swift xcode google-maps google-maps-markers gmsmapview