2012-09-21 61 views
13

工作IOS 6之前。當前位置不與蘋果地圖IOS 6

http://maps.google.com/maps?daddr=「+地址+」 & SADDR =當前+位置

這是偉大的工作,但現在,他們擺脫了谷歌地圖與iOS 6,我們必須檢查他們是哪個IOS版本如果他們使用IOS 6.0或更高版本,然後將它們引用到新的蘋果地圖url方案。我們使用新的URL方案是這樣的....

http://maps.apple.com/maps?daddr= 「+地址+」 & SADDR =當前+位置

這是基於在地圖URL方案,新的文檔,其可以在這裏不管怎麼說發現..

,我測試過它的一羣,把它歸結爲新的蘋果地圖並識別當前位置,像谷歌地圖一樣。

有誰知道我是如何解決這個問題的?

記住我建立與電話差距HTML應用程序,因此,使用本地代碼來設置起始地址到當前位置絕不會幫我。

+0

你忘了網址地方的文檔。 –

+0

Woops抱歉回到你這麼晚這裏是鏈接文件,雖然它沒有多大幫助。 http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html#//apple_ref/doc/uid/TP40007894-SW1 –

+0

使用20%,而不是正(+)符號。加號不是在網址中添加空格的正確方法。一些搜索引擎和表單提交使用plus作爲空間的替代,但正確的方法是%20。我已經在iPad上進行了驗證,當文本爲&saddr = Current%20Location – nivs1978

回答

10

我有同樣的問題。我還沒有找到一個解決辦法,但如果你省略了SADDR

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

它只會問他們從哪裏開始,第一個選項是「當前位置」因此,當他們點擊「當前位置」,它會顯示地圖正確。

如果有人找到一個更好的解決方案,請張貼,因爲我還在尋找一個更好的解決方案。

+0

時,上面的URL確實會打開導航感謝您的幫助,現在這將是一個很好的解決方案。啊,雖然谷歌地圖很光滑,但令人沮喪! –

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證實

+0

這將不得不在某種形式的UIWebView或者什麼?我確實知道如何在UIWebView中使用它,但它仍然需要請求許可才能使用GPS。 –

2

就可以得到當前位置的使用CLLocationManager,或者其包裝DKLocationManager(在github)的座標,創建通過Keith Pitt

一旦你的座標,你可以使用下面的代碼示例。

+ (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]]; 

} 
+0

你確定這個工作。我認爲在「當前+ Locaton」中有一個錯字 – ruralcoder

+0

@ruralcoder感謝您接收它。在編輯stackoverflow上的代碼時遇到了錯字。請讓我知道什麼是不工作。 –

3

只是通過「當前位置」作爲源地址:

http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address 
相關問題