2016-06-15 22 views
1

Ich möchte die Richtung zwischen zwei Markern zeigen, die ich gemacht habe. Wie kann ich es tun? Wie kann ich die Richtung anzeigen?Wie zeichnet man eine Route zwischen zwei Markern in Google Maps (swift)?

Hier ist mein Code, den ich Marker machen verwendet:

func mapView(mapView: GMSMapView, didLongPressAtCoordinate coordinate: CLLocationCoordinate2D) { 
    if counterMarker < 2 
    { 
     counterMarker += 1 
     let marker = GMSMarker(position: coordinate) 
     marker.appearAnimation = kGMSMarkerAnimationPop 

     marker.map = mapView 
     marker.position.latitude = coordinate.latitude 
     marker.position.longitude = coordinate.longitude 

     print(marker.position.latitude) 
     print(marker.position.longitude) 

    } 

Und hier ist der Code für Markierungen auf Klick zu löschen:

func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool { 

     let alert = UIAlertController(title: "Alert", message: "Are you Sure for deleting ?!", preferredStyle: UIAlertControllerStyle.Alert) 
     alert.addAction(UIAlertAction(title: "No", style: UIAlertActionStyle.Default) { 
      UIAlertAction in 
      NSLog("No Pressed") 


      }) 
     alert.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.Default) { 
      UIAlertAction in 
      NSLog("Yes Pressed") 
      marker.map = nil 
      self.counterMarker -= 1 

     }) 

     self.presentViewController(alert, animated: true, completion: nil) 

     return true 
    } 

Und Ich mag die Marker für das Ziel ist zeigen, und welches ist für den Ursprung.

Antwort

0

Verwenden GMSPolyline und legen Sie seine map Eigenschaft auf Ihre GMSMapView Linienzug/Route auf der Karte

+0

wie kann ich es verwenden?! –

+0

Auf die gleiche Weise verwenden Sie 'GMSMarker' wie oben. –

+0

können Sie mir den vollständigen Code dafür geben!? –

4

Verwenden Polylines zu ziehen, die Sie Linien auf der Karte zeichnen können. Sie müssen seinen Pfad angeben, indem Sie ein entsprechendes GMSMutablePath-Objekt mit zwei oder mehr Punkten erstellen. Jeder CLLocationCoordinate2D repräsentiert einen Punkt auf der Erdoberfläche. Liniensegmente werden zwischen Punkten entsprechend der Reihenfolge gezeichnet, in der Sie sie dem Pfad hinzufügen.

Beispiel:

let path = GMSMutablePath() 
path.addCoordinate(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0)) 
path.addCoordinate(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0)) 
path.addCoordinate(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2)) 
path.addCoordinate(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2)) 
path.addCoordinate(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0)) 

let rectangle = GMSPolyline(path: path) 
rectangle.map = mapView 

Schauen Sie sich diese Links zum Thema:

Für Swift 2.0 Google Maps, um Ihre Kartenansicht zu machen passen die Polylin e von die Route, die Sie zeichnen:

let path: GMSPath = GMSPath(fromEncodedPath: route)! 
    routePolyline = GMSPolyline(path: path) 
    routePolyline.map = mapView 


    var bounds = GMSCoordinateBounds() 

    for index in 1...path.count() { 
     bounds = bounds.includingCoordinate(path.coordinateAtIndex(index)) 
    } 

    mapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds)) 

hoffe, das hilft! :)

+0

Wie kann ich Markierungen, die ich mit longTouch gemacht habe, zu diesem Code hinzufügen? Ich möchte ein Ziel zwischen diesen beiden Markierungen hinzufügen. –

+0

Sie können diesen Link überprüfen: http://stackoverflow.com/questions/22550849/drawing-route-between-two-places-on-gmsmapview-in-ios – abielita

+0

Danke, es funktionierte für mich @abielita – MShah