的rvios's answer斯威夫特版本(与Swiftify)的帮助:
func createDashedLine(thisPoint: CLLocationCoordinate2D, nextPoint: CLLocationCoordinate2D, color: UIColor) {
let difLat = nextPoint.latitude - thisPoint.latitude
let difLng = nextPoint.longitude - thisPoint.longitude
let scale = camera.zoom * 2
let divLat = difLat/scale
let divLng = difLng/scale
let tmpOrig = thisPoint
var singleLinePath = GMSMutablePath()
for i in 0 ..< scale {
var tmpOri = tmpOrig
if i > 0 {
tmpOri = CLLocationCoordinate2DMake(tmpOrig.latitude + (divLat * 0.25), tmpOrig.longitude + (divLng * 0.25))
}
singleLinePath.addCoordinate(tmpOri)
singleLinePath.addCoordinate(CLLocationCoordinate2DMake(tmpOrig.latitude + (divLat * 1.0), tmpOrig.longitude + (divLng * 1.0)))
tmpOri = CLLocationCoordinate2DMake(tmpOrig.latitude + (divLat * 1.0), tmpOrig.longitude + (divLng * 1.0))
}
let polyline = GMSPolyline(path: singleLinePath)
polyline.geodesic = false
polyline.strokeWidth = 5.0
polyline.strokeColor = color
polyline.map = mapView
//Setup line style and draw
lengths = [(singleLinePath.lengthOfKind(kGMSLengthGeodesic)/100)]
polys = [polyline]
setupStyle(with: color)
tick()
}
func tick() {
for poly in polys {
poly.spans = GMSStyleSpans(poly.path, styles, lengths, kGMSLengthGeodesic, pos)
}
pos -= step
}
func setupStyle(with color: UIColor) {
let gradColor = GMSStrokeStyle.gradient(from: color, to: color)
styles = [gradColor, GMSStrokeStyle.solidColor(.white)]
step = 50000
}
https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_style_span。使用样式来获取它。 –