Naufal
Estoy usando Google Maps en mi aplicación en la que tengo que dibujar la polilínea paralela junto con el marcador de animación. Ambos deben moverse simultáneamente.
En este momento, mi solución funciona así. La primera polilínea se dibuja con nuevas coordenadas, luego el marcador de animación se mueve después.
Probé algunos enlaces en el desbordamiento de la pila… en los que la solución no estaba allí.
Esta es la solución que estoy buscando en iOS rápido… el siguiente enlace es para Android… que funciona perfectamente Cómo mover el marcador a lo largo de la polilínea usando el mapa de Google
Gracias si me pueden ayudar en estos..`
@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)
}`
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
conseguiste alguna solucion? esto es lo que estoy buscando…
– jayant rawat
5 de febrero de 2020 a las 6:21
He usado este método desde este enlace a continuación, … developers.google.com/maps/documentation/ios-sdk/reference/…
– Naufal
6 de febrero de 2020 a las 4:38
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!, longitud: oldLon!) let newloc = CLLocationCoordinate2D(latitud: newLat!, longitud: newLon!)let t = GMSGeometryInterpolate(oldloc, newloc, self.count)
– Naufal
6 de febrero de 2020 a las 4:40
gracias por la respuesta @Naufal … ¿puede proporcionar el código para el método mediante el cual puede lograr una animación simultánea? Será de mucha ayuda..
– jayant rawat
7 de febrero de 2020 a las 5:53
funciona si la distancia entre los puntos es menor, pero no si la distancia es mayor y la parte fraccionaria tampoco me queda clara…
– jayant rawat
7 de febrero de 2020 a las 12:09