做個項目,功能是需要從應用中跳轉(zhuǎn)到地圖應用中崔梗,并導航
這里只判斷幾個主流的地圖
1.Apple自帶的系統(tǒng)地圖
2.高德地圖
3.百度地圖
4.騰訊地圖
5.谷歌地圖
首先,想要從App中跳轉(zhuǎn)到某個地圖中垒在,需要設置該地圖的URLTypes 或白名單
1.設置白名單
在info.plist中添加key為LSApplicationQueriesSchemes的數(shù)組蒜魄,在這個數(shù)組中添加對應的地圖的URL Schemes
2.設置URL Types
在Target - >info 中的URL Types中添加對應地圖的URL Schemes
在IOS9中,官方規(guī)定“如果使用URL scheme必須在"Info.plist"中將你要在外部調(diào)用的URL Schemes列為白名單,否則不能使用”谈为。
注意:這里是要在外部調(diào)用的URL Schemes必須設為白名單旅挤,即提供給別人使用的,就像我使用百度地圖的URL Schemes峦阁,這百度地圖的URL Schemes必須設置成白名單谦铃。
注意:只設置URL Types雖說也能實現(xiàn)跳轉(zhuǎn)到地圖應用,但是這是地圖應用已經(jīng)安裝了的情況榔昔。如果你安裝了高德地圖驹闰,這時可以跳轉(zhuǎn)了,當你把高德地圖刪除以后撒会,canOpenURL返回的還是True嘹朗,并不能檢測到高德地圖被刪除了。
所以這里還是推薦使用白名單
言歸正傳
要跳轉(zhuǎn)到這些地圖中就要判斷是否安裝這些應用
上圖中是會用到的URL Schemes
使用[[UIApplication sharedApplication]canOpenURL:BaiduMap]來判斷是否安裝此地圖如果沒有安裝則不顯示出來
跳轉(zhuǎn)到地圖中會用到openURL方法
在IOS10及以后 [[UIApplication sharedApplication]openURL:object options:@{} completionHandler:nil];取代了[[UIApplication sharedApplication]openURL:object];
上面的object的url如果只是簡單的跳轉(zhuǎn)到地圖應用中诵肛,則可以直接使用
下圖中URL Schemes
如果涉及到導航屹培,則就要把位置信息傳遞過去
則url中可以封裝以下字符串(下面的字符串截圖是網(wǎng)上扒的,還沒驗證怔檩,不過各個開放平臺都有褪秀,可以自己去驗證)
1.百度
2.高德
3.谷歌
4.騰訊
下面是關于跳轉(zhuǎn)到系統(tǒng)自帶地圖的問題
在IOS10中,用戶可以將系統(tǒng)的一些自帶的應用刪除薛训,這就涉及到是否刪除了系統(tǒng)地圖的問題媒吗。
不過我不考慮這些問題,就當系統(tǒng)地圖一直存在于手機中
如果沒有刪除系統(tǒng)地圖在點擊跳轉(zhuǎn)的時候自然萬事大吉乙埃,
假如真的刪除了怎么辦闸英?沒關系,系統(tǒng)會提醒你去AppStore中恢復它
很省事不是嗎介袜?
我跳轉(zhuǎn)到系統(tǒng)地圖使用的是下面的語句甫何,這個使用到了MapKit,事先先導入