рисовать ломаную линию параллельно с маркером анимации на картах Google - PullRequest
0 голосов
/ 21 мая 2019

Я использую карты Google в своем приложении, где я должен провести параллель с ломаной линией вместе с маркером анимации. Обе должны двигаться одновременно.,

Сейчас мое решение работает следующим образом. Сначала рисуется полилиния с новыми координатами, а затем перемещается маркер анимации.

Я пробовал несколько ссылок в переполнении стека .., где решения не было.

Это решение, которое я ищу в быстрой iOS ... ссылка ниже для Android ..., которая отлично работает Как переместить маркер вдоль полилинии с помощью карты Google

Спасибо, если вы можете помочь мне в этих ..`

@objc func pocDrawPolyline() {
    if poclastShownIndex < (vehicleLocationArray.count) {
        let dict = vehicleLocationArray[poclastShownIndex]
        if let lati = dict["latitude"], let logi = dict["longitude"] {
            let lat = Double(lati as! String)
            let log = Double(logi as! String)
            let location = dict["location"] as? String
            pocCreateVehicleMarkerWith(address: location ?? "School Bus", latitude: lat!, and: log!)
            pocPath.add(CLLocationCoordinate2DMake(lat!, log!))
        }
        polyline.path = pocPath
        polyline.strokeWidth = 3.0
        polyline.strokeColor = UIColor.red
        polyline.map = googleMapView
        poclastShownIndex += 1
    } else {
        //No update from "NOW" API call
    }
}

func pocCreateVehicleMarkerWith(address: String, latitude: Double, and Longitude: Double) {
    // Creates a marker for Vehicle.
    if vechicleMarker.map == nil {
        vechicleMarker.position = CLLocationCoordinate2D(latitude: latitude, longitude: Longitude)
        vechicleMarker.title = address
        vechicleMarker.icon = UIImage(named: "bus1")
        vechicleMarker.map = googleMapView
    } else {
        CATransaction.begin()
        CATransaction.setAnimationDuration(0.5)
        vechicleMarker.position = CLLocationCoordinate2D(latitude: latitude, longitude: Longitude)
        vechicleMarker.title = address
        vechicleMarker.icon = UIImage(named: "bus1")
        CATransaction.commit()

        if poclastShownIndex > 0 {
            if let oldLatitude = vehicleLocationArray[poclastShownIndex-1]["latitude"],
                let oldLongitude = vehicleLocationArray[poclastShownIndex-1]["longitude"],
                let newLatitude = vehicleLocationArray[poclastShownIndex]["latitude"],
                let newLongitude = vehicleLocationArray[poclastShownIndex]["longitude"] {

                let oldLat = Double(oldLatitude as! String)
                let oldLon = Double(oldLongitude as! String)
                let newLat = Double(newLatitude as! String)
                let newLon = Double(newLongitude as! String)
                let oldloc = CLLocationCoordinate2D(latitude: oldLat!, longitude: oldLon!)
                let newloc = CLLocationCoordinate2D(latitude: newLat!, longitude: newLon!)

                let distanceInMeters = distance(from: oldloc, to: newloc)
                if distanceInMeters > 0 {
                    print("Rotation Degree ------ \(CLLocationDegrees(getHeadingForDirection(fromCoordinate: oldloc, toCoordinate: newloc)))")
                    vechicleMarker.groundAnchor = CGPoint(x: CGFloat(0.5), y: CGFloat(0.5))
                    vechicleMarker.rotation = CLLocationDegrees(getHeadingForDirection(fromCoordinate: oldloc, toCoordinate: newloc))
                    googleMapView.animate(toLocation: newloc)
                }
            }
        }

    }
}func timerMethod() {
    pocTimer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(pocDrawPolyline), userInfo: nil, repeats: true)
}`
...