2010-12-13 10 views
0

私は、Google Maps AppとIにユーザーを送る際にアップルのドキュメント(http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html)を見直しました。 「ユーザーの現在地から所定の緯度/経度の場所に自動的に誘導する方法を教えてください。」iOS Googleマップの質問

アップルのドキュメントでは、「saddr =」と「daddr =」をソースと現在の場所を取得する方法については言及していませんが、「saddr = Current」や「saddr = Here」のようなキーワードがありますか?

明らかに、これは、動作しません:

[app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=Here&daddr=Chicago"]]; 

私はシカゴにユーザーを送信しようとしていました。何かご意見は?

答えて

0

私はsaddr=Current%20Location&daddr=...はあなたが望むものであると信じています。

+0

それはURLを壊すので、 "現在の場所" は動作しません。 "現在"、 "CurrentLocation"、および "CURRENT_LOCATION" すべてはどちらか動作しません。 – startuprob

+0

あなたの文字列をエスケープしていないことに気付かなかった。スペース文字をエスケープして編集します。 –

+3

残念ながら、電話が英語以外の言語に設定されている場合、&saddr = Current%20Locationは機能しません。 – chris

0

iOSの逆ジオコーダーを使用して、現在地のアドレスを得ることができます(ユーザーが自分の所在地を取得できるようにします)。MKReverseGeocoderは逆ジオコーディングに使用されるクラスへの参照です。

-Daniel

1

私はあなたがこれを直接行うことはできないと思います。ただし、saddr=lat,longの形式(たとえばaddr=53.453209,-0.32930)を使用すると、パラメータに座標を入力できます。だから、あなたがGoogle Mapsに派遣する前に、あなたのアプリでユーザーの現在地を調べれば、その近似が得られます。

3

SOURCE: How to invoke iPhone Maps for Directions with Current Location as Start Address

あなたは、現在の位置を取得するために、コアの場所を使用する必要がありますが、その緯度/経度のペアで、あなたは住所へ、そこからのルートあなたのにマップを得ることができます。そうですね:

CLLocationCoordinate2D currentLocation = [self getCurrentLocation]; 
    NSString* address = @"123 Main St., New York, NY, 10001"; 
    NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@", 
        currentLocation.latitude, currentLocation.longitude, 
        [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]]; 
+0

CLLocation行に「Invalid Initializer」エラーが表示されます。 – startuprob

+0

- (CLLocationCoordinate2D)getCurrentLocationを追加する必要があるようです。メソッドをクラスに呼び出すと、URLのインスタンス化で使用するCLLocationCoordinate2Dを返すこのコードチャンクが呼び出されます。 – Josh

1

URLのsaddr部分には現在の位置と現在の位置だけを使用できます。これはiOSでも動作しますが、Androidで動作するものは見つかりません。

1

daddrパラメータだけを設定してGoogleマップのURLを呼び出すだけで、Googleマップでユーザーの現在地が自動的にからフィールドに挿入されます。

http://maps.google.de/maps?daddr=SOMEADDRESS

+0

申し訳ありませんが、これはSimulatorでのみ機能します(たとえば、ネイティブアプリではなくSafari MobileでGoogleマップを起動した場合) –

0
NSString* directionsURL = [NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",self.mapView.userLocation.coordinate.latitude, self.mapView.userLocation.coordinate.longitude, mapPoint.coordinate.latitude, mapPoint.coordinate.longitude]; 
if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL] options:@{} completionHandler:^(BOOL success) {}]; 
} else { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL]]; 
} 
関連する問題