13

IOS 6 より前は、この URL スキームを使用してネイティブ マップ アプリを開き、ユーザーの現在地から作成した住所までの道順を検索していました。

http://maps.google.com/maps?daddr= " + 住所 + "&saddr=現在地+場所

これはうまく機能していましたが、IOS 6 で Google マップを削除したため、使用している IOS のバージョンを確認し、IOS 6.0 以降を使用している場合は、新しい Apple マップの URL スキームを参照する必要がありました。私たちが使用している新しい URL スキームはこれです....

http://maps.apple.com/maps?daddr= " + 住所 + "&saddr=現在地 + 場所

これは、マップの URL スキームに関する新しいドキュメントに基づいています。

とにかく、私はそれをたくさんテストしました、そしてそれはグーグルマップがしたように、新しいアップルマップが現在の場所を認識することに要約されます.

これを修正する方法を知っている人はいますか?

電話ギャップのあるhtmlアプリを構築しているため、ネイティブコードを使用して開始アドレスを現在の場所に設定しても役に立たないことに注意してください。

4

4 に答える 4

10

私も同じ問題を抱えています。私はまだ解決策を見つけていませんが、saddrを省略した場合

http://maps.apple.com/maps?daddr=" + address

どこから始めればよいか尋ねるだけで、最初のオプションは「現在地」なので、「現在地」をクリックすると地図が正しく表示されます。

誰かがより良い解決策を見つけたら、私はまだより良い解決策を探しているので、それを投稿してください。

于 2012-09-22T23:31:16.340 に答える
3

私の方法を使用できます:

    <script type="text/javascript">

        var link = "maps:saddr=YPlat,YPlong&daddr=42.118599,-72.625122";
        navigator.geolocation.getCurrentPosition(showPosition);

        function showPosition(position)
        {

            link = link.replace("YPlat",position.coords.latitude);
            link = link.replace("YPlong",position.coords.longitude);

            window.location = link;
        } 
    </script>

iOS 5.1およびiOS 6で確認済み

于 2012-12-07T20:20:49.620 に答える
3

ソースアドレスとして「現在の場所」を渡すだけです。

http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address
于 2015-01-21T01:00:06.403 に答える
2

Keith Pittによって作成された CLLocationManager またはそのラッパーDKLocationManager (github 上)を使用して、現在の場所の座標を取得できます。

座標を取得したら、次のコード サンプルを使用できます。

+ (void) openDirectionFrom:CLLocation* currentLocation To:(NSString*) daddr {
    NSString* urlStr;
    NSString* saddr = @"Current+Location";

    if ([[UIDevice currentDevice] systemVersion] floatValue] >=6) {
        //iOS 6+, Should use map.apple.com. Current Location doesn't work in iOS 6 . Must provide the coordinate.
        if ((currentLocation.coordinate.latitude != kCLLocationCoordinate2DInvalid.latitude) && (currentLocation.coordinate.longitude != kCLLocationCoordinate2DInvalid.longitude)) {
            //Valid location.
            saddr = [NSString stringWithFormat:@"%f,%f", currentLocation.coordinate.latitude,currentLocation.coordinate.longitude];
            urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?saddr=%@&daddr=%@", saddr, daddr];
        } else {
            //Invalid location. Location Service disabled.  
            urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%@", daddr];
        }
    } else {
        // < iOS 6. Use maps.google.com
        urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@", saddr, daddr];
    }

    [(UIApplicationWithEvents*)[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];

}
于 2013-01-11T05:30:24.847 に答える