ios - 在 didUpdateLocations 中重绘方向路径

标签 ios swift google-maps google-maps-sdk-ios

我想重新绘制我的方向路径并将我的标记移动到当前位置。
我目前在 didUpdateLocations 函数中执行此操作,但它会出现故障,因为它会同时绘制多个标记和路径。

这是我的代码:

let location = locations.last

let destination = CLLocation(latitude: order!.user_coord![0], longitude: order!.user_coord![1])

let origin = CLLocation(latitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!)

self.drawPath(startLocation: origin, endLocation: destination)

self.createMarker(titleMarker: order!.store_name!, iconMarker: UIImage(named: "icons8-user_filled")!, latitude: order!.user_coord![0], longitude: order!.user_coord![1])

self.createMarker(titleMarker: "User", iconMarker: UIImage(named: "icons8-mountain_biking")!, latitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!)

let camera = GMSCameraPosition.camera(withLatitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!, zoom: 17.0)
self.map.animate(to: camera)
locationManager.stopUpdatingLocation()

最佳答案

声明一个变量

var drawFinished:Bool!

在viewDidLoad中

drawFinished = false

在 didUpdate 中

 if(!drawFinished)
 {   
   drawFinished = true

   let location = locations.last

   let destination = CLLocation(latitude: order!.user_coord![0], longitude: order!.user_coord![1])

   let origin = CLLocation(latitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!)

   self.drawPath(startLocation: origin, endLocation: destination)

   self.createMarker(titleMarker: order!.store_name!, iconMarker:   UIImage(named: "icons8-user_filled")!, latitude: order!.user_coord![0], longitude: order!.user_coord![1])

   self.createMarker(titleMarker: "User", iconMarker: UIImage(named: "icons8-mountain_biking")!, latitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!)

    let camera = GMSCameraPosition.camera(withLatitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!, zoom: 17.0)

    self.map.animate(to: camera)

    locationManager.stopUpdatingLocation()

   }

当你想更新集合时

   drawFinished = false  

像这样清除路径和注释

   func clearMapOverlays()
  {
    for dl in self.myMapView.overlays
    {

        if(dl is  GMSPolyline )
        {

            self.myMapView.remove(dl)

        }


    }

     self.myMapView.setNeedsDisplay()

    for name  in self.myMapView.annotations
    {                        

           self.myMapView.removeAnnotation(anno)

    }


}

关于ios - 在 didUpdateLocations 中重绘方向路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48041252/

相关文章:

ios - 如何解析谷歌地图的纬度和经度?

ios - 如何减去日期成分?

swift - 使窗口的标题栏完全透明

ios - SWIFT - UIDatePicker - 开始和结束日期选择,但无法弄清楚如何将这两个日期调用到两个不同的文本框中

ios - 如何使用预定的机器人在 Xcode 中执行测试操作?

swift - 快速从音频文件中删除音频 channel

javascript - 使用 javascript 从 Mysql 数据库中检索数据?

javascript - Google Maps Marker Cluster示例

javascript - 谷歌地图地理编码和循环标记

ios - 为什么 UIBarButtonItems 最小尺寸时宽度为 0