3

私は iOS 6.0 SDK を使用しており、Apple の新しい iOS 6.0 マップを使用して 2 つの異なる住所 (緯度と経度ではない) 間をルーティングしたいと考えています。目安も示していただきたいです。

これどうやってするの?

4

1 に答える 1

4

私は先週これを行うことを検討しましたが、それを行う方法を見つけられませんでした。目的地を指定できるようで、座標だけでなく、目的地を指定することもできますが、常に開始位置が現在の場所であると想定しています。あなたが現在出発地にいない間にあなたが旅行を計画しているかもしれないとき、それは制限しています。(しかし、おそらく私はそれがどのように行われるのか見ていません。それが本当なら誰かが私を訂正してくれることを願っています。)

しばらく前に、iOS 6のルーティングオプションを調べて、ここで結果を収集しました...

地図上のポイント間のルートをどのように提供しますか?欠けている部分は何ですか?

それでも、希望する正確なルーティングでApple Mapsを開くことができない場合がありますが、独自のインスタンスMKMapViewでオーバーレイと注釈を使用してルートを描画できる可能性があります。それはあなたが今できる最善のことかもしれません。

以下は、ある場所にルーティングし、座標だけに残すのではなく、少なくとも目的地のラベルを提供するために使用したコードです。宛先に完全なアドレスの詳細を含むラベルを付けるだけでは機能しないことがわかったので、その1つの値を指定するだけです。

if (flag != DirectionsFlag_PublicTransit && itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
    NSDictionary *address = @{ (NSString *)kABPersonAddressStreetKey : location.title };
    MKPlacemark *destinationPlacemark = [[MKPlacemark alloc] initWithCoordinate:location.coordinate addressDictionary:address];

    MKMapItem *destinationMapItem = [[MKMapItem alloc] initWithPlacemark:destinationPlacemark];
    if (flag == DirectionsFlag_Driving) {
        [destinationMapItem openInMapsWithLaunchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving}];
    }
    else if (flag == DirectionsFlag_Walking) {
        [destinationMapItem openInMapsWithLaunchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeWalking}];
    }
}

Apple Mapsはパブリックトランジットの方向を処理しないため、このコードは特にパブリックトランジットの方向を処理しません。代わりに、以前使用していたURLでGoogleマップを開いて、それらの方向にSafariを開くようにしました。フラグは、運転、徒歩、または公共交通機関の列挙値です。場所は、タイトルや座標など、さまざまな詳細が含まれているモデルです。

于 2012-10-08T15:36:58.387 に答える