Как переместить маркер над линией поли в swift, используя карту Google - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно переместить маркер по линии поли в swift 4 в xcode 11. Я уже добавил ломаную линию над картой. Вот изображение, похожее на .. enter image description here

Над изображением зеленого цвета находится начальная позиция, а красным - конечная позиция. есть маркер стрелки, который мне нужно переместить через начальный флаг, чтобы закончить флаг через всю линию поли. Мне нужно, чтобы вкладка маркера переместилась из начальной в конечную позицию маркера стрелки. Я использовал приведенный ниже код, чтобы нарисовать изображение выше ...

let url = "my url"

AF.request( url,method: .get).responseString{ response in

    switch response.result {
    case .success(let responseData):
        let jsonData = responseData.data(using: .utf8)!

        let rect = GMSMutablePath()
        var start_lng:Double = 0.0;
        var start_lat:Double = 0.0;
        var end_lng:Double = 0.0;
        var end_lat:Double = 0.0;

        do {
            if let json = try JSONSerialization.jsonObject(with: jsonData) as? [[String: Any]] {

                for data in json {
                    var lng:Double = 0.0;
                    var lat:Double = 0.0;

                    if let v_lon = data["lon"] as? String {
                        lng = Double(v_lon)!
                    }

                    if let v_lat = data["lat"] as? String {
                        lat = Double(v_lat)!
                    }

                    if(start_lng == 0){
                        start_lng = lng
                        start_lat = lat
                    }
                    end_lng = lng
                    end_lat = lat

                    rect.add(CLLocationCoordinate2D(latitude: lat, longitude: lng))

                }


                if(start_lng > 0 && start_lat > 0){

                    //Begin Address
                    var addressString : String = ""
                    var center : CLLocationCoordinate2D = CLLocationCoordinate2D()
                    let ceo: CLGeocoder = CLGeocoder()
                    center.latitude = start_lat
                    center.longitude = start_lng
                    let loc: CLLocation = CLLocation(latitude:center.latitude, longitude: center.longitude)

                    let marker = GMSMarker()
                    marker.position = CLLocationCoordinate2DMake(start_lat, start_lng)
                    marker.icon = UIImage(named: "ic_navigation_start_flag")
                    marker.map = self.googleMap

                    //add navigation marker
                    let marker1 = GMSMarker()
                    marker1.position = CLLocationCoordinate2DMake(start_lat, start_lng)
                    marker1.icon = UIImage(named: "ic_navigation_marker")
                    marker1.map = self.googleMap


                }

                //Bengin end flag
                if(end_lng > 0 && end_lat > 0){
                    //Begin Address
                    var addressString : String = ""
                    var center : CLLocationCoordinate2D = CLLocationCoordinate2D()
                    let ceo: CLGeocoder = CLGeocoder()
                    center.latitude = end_lat
                    center.longitude = end_lng
                    let loc: CLLocation = CLLocation(latitude:center.latitude, longitude: center.longitude)

                    let marker1 = GMSMarker()
                    marker1.position = CLLocationCoordinate2DMake(end_lat, end_lng)
                    marker1.icon = UIImage(named: "ic_navigation_end_flag")
                    marker1.setIconSize(scaledToSize: .init(width: 50, height: 50))
                    marker1.map = self.googleMap

                }
                //End end flag

                let polygon = GMSPolygon(path: rect)
                polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
                polygon.strokeColor = UIColor.init(hue: 210, saturation: 88, brightness: 84, alpha: 1)
                //polygon.strokeColor = .black
                polygon.strokeWidth = 2.5
                polygon.map = self.googleMap
                let bounds = GMSCoordinateBounds(path:rect )                    
                self.googleMap.animate(with: GMSCameraUpdate.fit(bounds, withPadding: 25))


            }
        } catch { print(error) }



    case .failure(let error):
        Custom_Progress_Bar.hide_progress_dialog()
        print("error--->",error)
    }
}

Пожалуйста, помогите мне переместить стрелку Маре от начала до конца.

...