MapView 相机在 iOS Swift 中没有改变
Posted
技术标签:
【中文标题】MapView 相机在 iOS Swift 中没有改变【英文标题】:MapView Camera not changing in iOS Swift 【发布时间】:2018-03-29 16:52:22 【问题描述】:感谢您对我的问题的帮助,我正在创建一个名为 mapView 的视图,并将其类更改为 GMSMapView。 但是当我将地图分配给这个mapView时,布局非常好,但相机默认设置为欧洲,这并没有改变。
以下是代码:
@IBOutlet weak var mapView: GMSMapView!
var latitudes = [19.199782,19.19855,19.199179]
var longitudes = [72.8734634,72.872935, 72.874535]
var titles = ["Riviera","Alica","Senate"]
var subTitle = ["1","2","3"]
override func viewDidLoad()
super.viewDidLoad()
let camera = GMSCameraPosition.camera(withLatitude: 19.20060, longitude: 72.8734462, zoom: 15.0)
let mapView1 = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
let path = GMSMutablePath()
for i in 0...2
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitudes[i], longitude: longitudes[i])
marker.title = titles[i]
marker.snippet = subTitle[i]
marker.map = mapView1
path.add(CLLocationCoordinate2D(latitude: latitudes[i], longitude: longitudes[i]))
let polyLine = GMSPolyline(path: path)
polyLine.map = mapView1
mapView = mapView1
mapView.camera = camera
代码的输出是: Output
当我添加地图以查看时,我得到了所需的地图
对以上代码的修改: 而不是 mapView = mapView1 放 视图 = mapView1
所需输出:Desired Output
所以请帮助我在我的屏幕的 mapView 视图中获得所需的输出。 谢谢!
【问题讨论】:
为什么要创建新变量mapView1?您可以直接将属性分配给您的 mapView。 DionizB ,我试过你的方法,但它不起作用 【参考方案1】:GMSMapView 类有如下功能:
animate(to:GMSCameraPosition)
所以在您的代码中,不要在地图视图上设置相机属性,而是这样做:
mapView.animate(to: camera)
希望这会有所帮助!
编辑
在仔细研究此代码后,我认为您的 mapView1 是不必要的,并导致您的插座出现问题。试试这样的:
override func viewDidLoad()
super.viewDidLoad()
let camera = GMSCameraPosition.camera(withLatitude: 19.20060, longitude: 72.8734462, zoom: 15.0)
let path = GMSMutablePath()
for i in 0...2
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitudes[i], longitude: longitudes[i])
marker.title = titles[i]
marker.snippet = subTitle[i]
marker.map = mapView
path.add(CLLocationCoordinate2D(latitude: latitudes[i], longitude: longitudes[i]))
let polyLine = GMSPolyline(path: path)
polyLine.strokeWidth = 2.0
polyLine.strokeColor = .black
polyLine.map = mapView
mapView.animate(to: camera)
在旁注中,我还建议将您的四个数组替换为一个字典对象数组,每个字典对象包含一个标题、副标题、纬度和经度,或类似的东西。然后更改您的 for 循环以适应
【讨论】:
@NewCoder 编辑了我的原帖【参考方案2】:我会建议视图的类型设置为UIView的,因为你编程,然后创建mapView1初始化mapView1后 P>
let mapView1 = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
将其作为addSubview(mapView1)
添加到视图中。
希望对您有所帮助!
【讨论】:
以上是关于MapView 相机在 iOS Swift 中没有改变的主要内容,如果未能解决你的问题,请参考以下文章
使用googleMaps api在swift mapView中显示方向按钮