GMSPolyline con patrón de puntos entre varios pines

1 minuto de lectura

Estoy tratando de dibujar una polilínea punteada en GMSMapView. Lo que he logrado hasta ahora es agregar una polilínea discontinua en el mapa. Para lo cual he escrito debajo del código:

polyLine.strokeWidth = 10
polyLine.strokeColor = UIColor(red: 95/255, green: 89/255, blue: 89/255, alpha: 1.0)
let styles: [GMSStrokeStyle] = [GMSStrokeStyle.solidColor(UIColor.clear), GMSStrokeStyle.solidColor(UIColor.red)]
let scale = 1.0 / testMap.projection.points(forMeters: 1, at: testMap.camera.target)
let solidLine = NSNumber(value: 10.0 * Float(scale))
let gap = NSNumber(value: 10.0 * Float(scale))        
let span = GMSStyleSpans(polyLine.path!, styles, [solidLine, gap], GMSLengthKind.rhumb)        
polyLine.spans = span

Con este código, obtengo una polilínea con cuadrados de 10×10 como guiones.

Para la polilínea punteada, he intentado configurar la imagen del punto como uno de los colores sólidos en GMSStrokeStyle como se muestra a continuación:

let styles: [GMSStrokeStyle] = [GMSStrokeStyle.solidColor(UIColor(patternImage: UIImage(named: "dot1.jpg")!)), GMSStrokeStyle.solidColor(UIColor.red)]

Una solución más que he probado para lo mismo es aquí

Con esta solución, el mapa tarda mucho tiempo en cargarse y actualizarse. Por lo que la aplicación se cuelga al cargar el mapa.

¿Cuáles son otros enfoques para dibujar una polilínea punteada en Google Map en ios?

  • para evitar retrasos y problemas de entrega, puede actualizar la polilínea en “idleAt” en lugar de “didChange”.

    – Jay Thakkar

    15 de marzo de 2019 a las 8:00

  • Sí. Definitivamente podemos usar la función “idleAt”. Pero, ¿cómo podemos resolver el problema de bloqueo en la carga inicial del mapa? Con más de 5 ubicaciones en el mapa, se tarda unos buenos 25 segundos en cargar el mapa inicialmente.

    – Sastre Keyur

    15 de marzo de 2019 a las 8:11

¿Ha sido útil esta solución?