2016-01-08 4 views
6

Ich versuche, den Pfad zwischen zwei Standorten anzuzeigen, aber es ist nicht korrekt.Google Karte SDK - Pfad nicht genau

if(center.latitude != 0 && center.longitude != 0) 
      { 
      NSString *urlString = [NSString stringWithFormat: 
            @"%@?origin=%f,%f&destination=%f,%f&sensor=true&key=%@", 
            @"https://maps.googleapis.com/maps/api/directions/json", 
            center.latitude, 
            center.longitude, 
            center1.latitude, 
            center1.longitude, 
            KGoogleMapServerKey]; 

      NSError *error; 
       NSDictionary *json =[NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString] options:NSDataReadingUncached error:&error] options:NSJSONReadingMutableContainers error:&error]; 
      if(json[@"routes"] != nil && [json[@"routes"] count] > 0) 
      { 
       GMSPath *path =[GMSPath pathFromEncodedPath:json[@"routes"][0][@"overview_polyline"][@"points"]]; 
       GMSPolyline *singleLine = [GMSPolyline polylineWithPath:path]; 
       singleLine.strokeWidth = 7; 
       singleLine.strokeColor = [UIColor colorWithRed:56.0/255.0 green:163.0/255.0 blue:249.0/255.0 alpha:1.0]; 
       singleLine.map = mapViewGoogle; 
      } 

Dies ist der Weg, den ich bin immer:

enter image description here

Wie Sie sehen können, die blaue Linie (Pfad) geht nicht am Ziel.
Wie behebt man das?

+0

Ich denke, Google nicht weiß, wie man das Ziel zu erreichen, weil es keine Route ist, oder es ist in privatem Bereich, so ähnlich. – wf9a5m75

Antwort

5

Ihr Weg zu lang ist. In jeder Antwort von Google Directions API ist die Anzahl der Punkte begrenzt. In Ihrem Beispiel haben Sie N Punkte erhalten, mit ihnen eine Route gezeichnet und den MapView in den Bereich gezoomt, wo nur vier Punkte platziert wurden.
Um immer eine genaue Route anzuzeigen, sollten Sie nach jeder Kartenzoomberechnung die Route neu berechnen (einschließlich der Mittelpunkte, um die Route gleich zu halten).
Zum Beispiel volle Route auf Ihrem Bildschirm hat 50 Punkte. Sie zoomen die Karte, so dass nur 4 Punkte angezeigt werden (Ihr Screenshot). Nehmen Sie nun # 1 als Start, # 5 als Ziel und # 2 # 3 # 4 als Mittelpunkte und senden Sie eine neue Anfrage, um die Route für diese Punkte zu finden. Sie erhalten 50 neue Punkte, mit denen Sie diesen Teil der Route genauer zeichnen können.

enter image description here

+0

Dies scheint gerechtfertigt. Vielen Dank – Nitish

1

Der Punkt dabei ist, dass es kein Weg für dieses Ziel ist, wie Sie hier sehen können: Gmap of your Example

Ich denke, dass die beste Wahl ist, um die gleiche Methode verwenden, dass Gmaps bereits verwenden, ich mein mit gepunktetem/gestrichelten Polylinie vom letzten Punkt erhalten Sie Richtungen zu dem tatsächlichen Punkt.

Sie können hier paar Beispiele herausfinden, um deine Art von Linienzug zu implementieren:

Creating a dashed using IOS SDK

+0

Nun, wenn das stimmt, dann wieso Google Maps den Pfad korrekt auf [** web **] zeigt (https://www.google.co.in/maps/dir/Vju+AS,+Skredermoen+35, +4513 + Mandal, + Norwegen/Storgata + 2, + 0155 + Oslo, + Norwegen/@ 59.9082978.10.7358573,13z/Daten =! 4m14! 4m13! 1m5! 1m1! 1s0x46378e55431b5435: 0x306f6da1490b5f7b! 2m2! 1d7.4111312! 2d58.0184825! 1m5! 1m1! 1s0x46416e627216c757: 0xd7785d6e9ecf2c43! 2m2! 1d10.7483587! 2d59.9127025! 3e0? Hl = de)? – Nitish