Отвечу в Swift 2 из моего фрагмента кода
//MARK:- Draw Route Betweeen two points
/**
To draw a route between to cordinates.
- parameter origin: Source marker cordinate
- parameter destination: destination marker cordinate
- parameter zoomCamera: True if you want to zoom the map.
- parameter completionHandler: GMSPolyline - to draw the route.
*/
func drawRoute(origin: CLLocation, destination: CLLocation, zoomCamera : Bool!, completionHandler: (polyline : AnyObject) -> Void)
{
let key : String = Macros.apiKeys.key
let originString: String = "\(origin.coordinate.latitude),\(origin.coordinate.longitude)"
let destinationString: String = "\(destination.coordinate.latitude),\(destination.coordinate.longitude)"
let directionsAPI: String = "https://maps.googleapis.com/maps/api/directions/json?"
let directionsUrlString: String = "\(directionsAPI)&origin=\(originString)&destination=\(destinationString)&key=\(key)"
Alamofire.request(.GET, directionsUrlString, parameters: ["": ""])
.responseJSON { response in
if let JSON = response.result.value
{
self.getRoutesWayPointsBetweenCordinates(origin.coordinate, destination: destination.coordinate, completionHandler:
{ (routesArray) in
if routesArray.count > 0
{
let routesArray : NSArray = JSON.objectForKey("routes") as! NSArray
if routesArray.count > 0
{
let routeDic = routesArray[0]
let routeOverviewPolyline = routeDic .objectForKey("overview_polyline")
let points : String = routeOverviewPolyline! .objectForKey("points") as! String
// Creating Path between source and destination.
self.path = GMSPath(fromEncodedPath: points)
if self.polyline != nil
{
self.polyline.map = nil
}
self.polyline = GMSPolyline(path: self.path)
self.polyline.strokeWidth = 4.5
self.polyline.geodesic = true
self.animateRoute(self.polyline, origin: origin.coordinate, destination: destination.coordinate, pathColor:UIColor.blueColor(), zoomCamera: zoomCamera)
completionHandler(polyline: self.polyline)
}
}else
{
let poly : GMSPolyline = GMSPolyline()
poly.strokeWidth = 5.5
completionHandler(polyline: poly)
}
})
}
}
}
func animateRoute(polyline : GMSPolyline, origin : CLLocationCoordinate2D, destination : CLLocationCoordinate2D, pathColor : UIColor, zoomCamera : Bool!)
{
polyline.strokeColor = pathColor
polyline.map = self.customMapView // Drawing route
let bounds = GMSCoordinateBounds(path: path)
var pad : CGFloat = 40.0
if padding != nil
{
pad = padding
}
if zoomCamera == true
{
zoomCameraWithBounds(bounds, pad: pad)
}
}
/**
It will zoom the camera at specific bounds
- parameter bounds: Bounds around which the camera should zoom
- parameter pad: Padding value from the edges of the window.
*/
func zoomCameraWithBounds(bounds : GMSCoordinateBounds, pad : CGFloat)
{
let camera = self.customMapView.cameraForBounds(bounds, insets:UIEdgeInsetsZero)
self.customMapView.camera = camera!
let zoomCamera = GMSCameraUpdate.fitBounds(bounds, withPadding: pad)
self.customMapView.animateWithCameraUpdate(zoomCamera) // Above lines will update map camera to fit to bounds so that the complete route between source and destination is visible.
}
Что вы делаете, это вызвать функцию drawRoute и передать ей исходные и целевые координаты, а также использовать Alamofir е для апи хит
Важные Изменяйте эту Macros.apiKeys.key с ваш Google API ключ и убедитесь, что он имеет соответствующие характеристики позволили
Вы хотите нарисовать ломаную линию между двумя точками? –