我在 mapView 中添加多个标记时遇到问题
i'm having a trouble adding multiple markers in a mapView
我在 mapView 中添加多个标记时遇到问题,但我总是以显示一个标记结束,这是最后调用的标记,我不知道为什么。
这样做的目的是获取包含纬度和经度的数据并添加那些我试图静态做的标记,但我能够显示多个标记
我创建了一个添加新标记的函数,我在 viewDidLoad 中调用它
` 覆盖 func viewDidLoad() {
super.viewDidLoad()
AddMarker(title: "pala", snippet: "nanana", latitude: 35.741522, longitude: 9.805937)
AddMarker(title: "pala", snippet: "nanana", latitude: 36.89939467218524, longitude: 10.187976658321267)
}
private func AddMarker(title:String , snippet:String , latitude:Double , longitude:Double){
var title = title
var snippet = snippet
var latitude = latitude
var longitude = longitude
let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
view = mapView
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
}
`
在 addMarker 方法之外创建一个 GMSMapView 实例作为实例 属性。并在 addMarker 方法中更改其相机位置并添加标记。
let mapView = GMSMapView()
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0)
self.mapView.animate(to: camera)
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
}
当一个一个地添加多个标记时,不要将相机位置设置为最后一个标记位置的动画。要在地图视图中显示所有标记,您可以使用 GMSCoordinateBounds
let mapView = GMSMapView()
var bounds = GMSCoordinateBounds()
override func viewDidLoad() {
super.viewDidLoad()
addMarker(title: "pala", snippet: "nanana", latitude: 35.741522, longitude: 9.805937)
addMarker(title: "pala", snippet: "nanana", latitude: 36.89939467218524, longitude: 10.187976658321267)
}
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
bounds = bounds.includingCoordinate(marker.position)
let update = GMSCameraUpdate.fit(bounds, withPadding: 50)
mapView.animate(with: update)
}
我在 mapView 中添加多个标记时遇到问题,但我总是以显示一个标记结束,这是最后调用的标记,我不知道为什么。 这样做的目的是获取包含纬度和经度的数据并添加那些我试图静态做的标记,但我能够显示多个标记
我创建了一个添加新标记的函数,我在 viewDidLoad 中调用它 ` 覆盖 func viewDidLoad() { super.viewDidLoad()
AddMarker(title: "pala", snippet: "nanana", latitude: 35.741522, longitude: 9.805937)
AddMarker(title: "pala", snippet: "nanana", latitude: 36.89939467218524, longitude: 10.187976658321267)
}
private func AddMarker(title:String , snippet:String , latitude:Double , longitude:Double){
var title = title
var snippet = snippet
var latitude = latitude
var longitude = longitude
let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
view = mapView
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
}
`
在 addMarker 方法之外创建一个 GMSMapView 实例作为实例 属性。并在 addMarker 方法中更改其相机位置并添加标记。
let mapView = GMSMapView()
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0)
self.mapView.animate(to: camera)
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
}
当一个一个地添加多个标记时,不要将相机位置设置为最后一个标记位置的动画。要在地图视图中显示所有标记,您可以使用 GMSCoordinateBounds
let mapView = GMSMapView()
var bounds = GMSCoordinateBounds()
override func viewDidLoad() {
super.viewDidLoad()
addMarker(title: "pala", snippet: "nanana", latitude: 35.741522, longitude: 9.805937)
addMarker(title: "pala", snippet: "nanana", latitude: 36.89939467218524, longitude: 10.187976658321267)
}
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
bounds = bounds.includingCoordinate(marker.position)
let update = GMSCameraUpdate.fit(bounds, withPadding: 50)
mapView.animate(with: update)
}