Google Maps SDK for iOS のドキュメントを読んでいますが、地図上にルートを描画することについて何も知りませんでした。
ポリラインが利用できることは知っていますが、それが最善のアプローチだとは思いません。
出来ますか?
Google Maps SDK for iOS のドキュメントを読んでいますが、地図上にルートを描画することについて何も知りませんでした。
ポリラインが利用できることは知っていますが、それが最善のアプローチだとは思いません。
出来ますか?
iOS SDK はまだルート案内をサポートしていません。それまでにできることは、Directions API Web サービスを使用して、GMSPolyline でルートを自分でレンダリングすることです。
これを SDK に追加するには、機能要求も提出する必要があります。
Saxon Druce の答えとして、Google Maps Directions Web サービスを使用してルートを検索し、ポリラインで描画できます。このエピソードでは、それを実現する方法を示します。サンプル コードは、このgithub リポジトリからダウンロードできます。
ライブラリにはドキュメントにないものがいくつかあるため、機能を探している場合は、SDK をダウンロードしてヘッダーを確認する価値があります。
しかし、現在のバージョン 1.0.2 では、ルーティングに関するものは何も表示されません。ルートを検索したり、ルートを描画したり (またはアドレスを検索したり) することはありません。今のところ、唯一のオプションは、おそらく他の Google API を使用してルートを見つけてから、Lee が言ったように、ポリラインを使用してそれらを描画することです。
同じGoogle Maps ios SDKを使用して、Googleマップに方向パスを描画する必要がある同様の問題がありました。私がしたことは、Google Distance APIにアクセスしたことでした。
次のコードを使用して、API から html_instructions と end_location を抽出しました。
これらの変数をプロパティとして定義しました
@property NSMutableArray *detailedSteps;
@property (strong, nonatomic) IBOutlet GMSMapView *mapview;
end_location と html_instructions を抽出する次のコード
NSURL *url=[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=ahmedabad&destination=%@",self.city]];
NSURLResponse *res;
NSError *err;
NSData *data=[NSURLConnection sendSynchronousRequest:[[NSURLRequest alloc] initWithURL:url] returningResponse:&res error:&err];
NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSArray *routes=dic[@"routes"];
NSArray *legs=routes[0][@"legs"];
NSArray *steps=legs[0][@"steps"];
NSMutableArray *textsteps=[[NSMutableArray alloc] init];
NSMutableArray *latlong=[[NSMutableArray alloc]init];
for(int i=0; i< [steps count]; i++){
NSString *html=steps[i][@"html_instructions"];
[latlong addObject:steps[i][@"end_location"]];
[textsteps addObject:html];
}
self.detailedSteps=textsteps;
[self showDirection:latlong];
そして、これがマップ上にポリゴンを描画するメソッド showDirection です。ここでは、latlong 配列を渡しています。これは実際には end_location 配列です。
-(void)showDirection:(NSMutableArray*) latlong{
GMSMutablePath *path = [GMSMutablePath path];
for(int i=0; i<[latlong count]; i++){
double lat=[latlong[i][@"lat"] doubleValue];
double lng=[latlong[i][@"lng"] doubleValue];
[path addLatitude:lat longitude:lng];
}
NSLog(@"Direction path");
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeColor = [UIColor blueColor];
polyline.strokeWidth = 5.f;
polyline.map = self.mapview ;
}
バージョン 1.1.0 でさえ、ルート案内用のツールを実装していないため、最高のパフォーマンスを得るには URL スキームを使用することをお勧めします。
Google Maps iOS SDKを使用してルート/方向を描画できるようになったと思います。
こちらの公式ビデオチュートリアルに従ってください:
http://talkminer.com/viewtalk.jsp?videoid=AdV7bCWuDYg&q=&row=4&N=5#.Ui2H1mSAZTE