ฉันค่อนข้างคิดว่านี่คงไม่ใช่เรื่องยากที่จะหา แต่ดูเหมือนว่ามันไม่ใช่เรื่องง่ายที่จะค้นหาบทความข้ามอุปกรณ์ที่ยอดเยี่ยมอย่างที่คุณคาดหวัง
ฉันต้องการสร้างลิงก์ที่เปิดเบราว์เซอร์ของอุปกรณ์มือถือและท่องไปยังแผนที่ Google หรือเปิดแอปแผนที่ (Apple Maps หรือ Google Maps) และเริ่มต้นเส้นทางโดยตรงเช่นเริ่มต้นที่ตำแหน่งปัจจุบันสิ้นสุด ณ จุดที่กำหนด ( lat / long)
ฉันสามารถทดสอบบนอุปกรณ์สองเครื่อง (ข้าง browserstack) คือ Android และ iPhone
ลิงค์ต่อไปนี้ใช้ได้เฉพาะบน Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
เมื่อคลิกลิงก์นี้ใน Chrome ของ iPhone สิ่งนี้จะเปิด Google Maps ในเวอร์ชันเดสก์ท็อปอย่างแปลกประหลาดพร้อมโฆษณาบนแอปมือถือ ...
อันนี้ใช้ได้เฉพาะบน iOS เปิด Apple Maps ขอให้ฉันป้อนตำแหน่งเริ่มต้น (ฉันสามารถเลือก "ตำแหน่งปัจจุบัน") และเริ่มเส้นทาง = พฤติกรรมที่ต้องการ การคลิกลิงก์นี้ล้มเหลวโดยสิ้นเชิงบน Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
สังเกตแผนที่: // protocol
มีวิธีการข้ามอุปกรณ์ที่สวยงามในการสร้างลิงก์ดังกล่าวหรือไม่? ลิงค์เดียวที่ใช้ได้กับโทรศัพท์มือถือหลักทั้งหมด?
ขอบคุณ
UPDATE: พบโซลูชันแล้ว (นะ)
นี่คือสิ่งที่ฉันคิดขึ้นมา มันไม่ใช่อย่างที่ฉันคิดแม้ว่ามันจะใช้งานได้
var ua = navigator.userAgent.toLowerCase(),
plat = navigator.platform,
protocol = '',
a,
href;
$.browser.device = ua.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera/i) ? ua.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera/i)[0] : false;
if ($.browser.device) {
switch($.browser.device) {
case 'iphone':
case 'ipad':
case 'ipod':
function iOSversion() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
// supports iOS 2.0 and later: <http://bit. ly/TJjs1V>
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
}
}
var ver = iOSversion() || [0];
if (ver[0] >= 6) {
protocol = 'maps://';
}
else {
protocol = 'http://maps.google.com/maps';
}
break;
case 'android':
default:
protocol = 'http://maps.google.com/maps';
break;
}
a.attr('href', protocol + href)
maps://
โปรโตคอลแผน URL สำหรับแอปเปิ้ลแอป Maps ซึ่งจะเริ่มต้นการทำงานบน iOS 6 หรือสูงกว่า มีหลายวิธีในการทดสอบว่ามีการติดตั้ง gmaps หรือไม่จากนั้นเลือกว่าจะทำอย่างไรกับ url แต่มันมากเกินไปสำหรับสิ่งที่ฉันตั้งใจไว้ ดังนั้นฉันจึงสร้างแผนที่: // หรือลิงก์ maps.google.com/ โดยใช้พารามิเตอร์ด้านบน
** อัพเดท **
น่าเศร้าที่$ .browser.deviceไม่ทำงานเนื่องจาก jquery 1.9 (ที่มา - http://api.jquery.com/jquery.browser )