在Google地图中与动画标记平行绘制折线

时间:2019-05-21 05:56:52

标签: ios swift google-maps-markers google-polyline

我在应用程序中使用了google maps,其中我必须将多义线与动画标记一起绘制。两者都应同时移动。

现在,我的解决方案是这样的。首先用新的坐标绘制折线,然后再移动动画标记。

我已经尝试了堆栈溢出中的几个链接。.其中没有解决方案。

这是我正在快速的iOS中寻找的解决方案...下面的链接适用于android .. How to move marker along polyline using google map

谢谢您的帮助。.

@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)
}`

0 个答案:

没有答案