2016-01-08 21 views
6

2つの場所の間の経路を表示しようとしていますが、正確ではありません。GoogleマップSDK - 正確なパスがありません

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; 
      } 

これは私が取得していますパスです:

enter image description here

をあなたが見ることができるように、青線(パス)を目的地に行きません。
これを修正するには?

+0

私は、ルートがないため、またはプライベートエリアにそのようなものがあるため、Googleは目的地に到達する方法を知らないと思います。 – wf9a5m75

答えて

5

あなたのルートが長すぎます。 Google Directions APIの各回答にはポイント数が限られています。あなたの例では、Nポイントを受け取ってルートを描き、mapViewをエリアにズームしました。ここで4ポイントしか配置されませんでした。
常に正確なルートを表示するには、各マップのズーム後にルートを再計算する必要があります(ルートを同じに保つために中間点を含む)。
たとえば、フルルートは50ポイントです。あなたはマップをズームしているので、4点しか表示されません(あなたのスクリーンショット)。今度はスタートとして#1、フィニッシュとして#5、中点として#2#3#4をとり、これらのポイントのルートを見つける新しいリクエストを送信します。あなたは新しい50点を受け取り、それらを使ってこの部分をより正確に描くことができます。

+0

これは正当だと思われます。ありがとう – Nitish

1

これのポイントは、あなたがここに見ることができるように、その先にはルートがないことである:私はあなたの最善の策はGmapsが既に使用するのと同じアプローチを使用していることを推測Gmap of your Example

を、私は点線で使用することを意味/最後のポイントからポリゴンを破線にして、実際のポイントまでの道順を取得します。

あなたはポリラインのあなたのタイプを実装するためにアウトのここでのカップルの例を見つけることができます。

Creating a dashed using IOS SDK

+0

それが本当であれば、Googleマップで[** web **](https://www.google.co.in/maps/dir/Vju+AS,+Skreddermoen+35,+4513)のパスが正しく表示される理由+ Mandal、+ Norway/Storgata + 2、+ 0155 + Oslo、+ Norway/@ 59.9082978,10.7358573,13z/data =!4m14!4m13!1m5!1m1!1s0x46378e55431b5435:0x306f6da1490b5f7b!2m2!1d7.4111312!2d58.0184825! 1m5!1m1!1s0x46416e627216c757:0xd7785d6e9ecf2c43!2m2!1d10.7483587!2d59.9127025!3e0?hl = en)? – Nitish

関連する問題