Tôi nghĩ rằng điều này sẽ không quá khó để tìm ra nhưng bề ngoài không dễ để tìm thấy một bài báo tuyệt vời về thiết bị chéo, như bạn mong đợi.
Tôi muốn tạo một liên kết mở trình duyệt của thiết bị di động và lướt tới bản đồ google HOẶC mở ứng dụng bản đồ (Apple Maps hoặc Google Maps) và trực tiếp bắt đầu một tuyến đường, tức là: bắt đầu tại vị trí hiện tại, kết thúc tại một điểm nhất định ( vĩ độ / dài).
Tôi có thể thử nghiệm trên hai thiết bị (bên cạnh browserstack), một Android và một iPhone.
Liên kết sau chỉ hoạt động trên Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Nhấp vào liên kết này trong Chrome của iPhone, điều kỳ lạ này sẽ mở ra Google Maps trong phiên bản máy tính để bàn với quảng cáo trên ứng dụng di động ...
Cái này chỉ hoạt động trên iOS, mở Apple Maps yêu cầu tôi nhập vị trí bắt đầu (tôi có thể chọn "Vị trí hiện tại") và bắt đầu tuyến đường = hành vi mong muốn. Nhấp vào liên kết này hoàn toàn không thành công trên Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Lưu ý các bản đồ: // giao thức.
Có cách thiết bị chéo thanh lịch nào để tạo liên kết như vậy không? Một liên kết hoạt động trên tất cả các điện thoại di động chính?
Cảm ơn
CẬP NHẬT: Giải pháp được tìm thấy (kinda)
Đây là những gì tôi đã nghĩ ra. Nó không hoàn toàn như những gì tôi tưởng tượng, mặc dù nó đang hoạt động.
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)
các maps://
giao thức là giao thức url cho táo bản đồ ứng dụng, mà sẽ chỉ bắt đầu làm việc trên ios 6 hoặc cao hơn. Có nhiều cách để kiểm tra xem gmap có được cài đặt hay không và sau đó chọn những gì sẽ làm với url, nhưng điều đó hơi quá so với những gì tôi dự định. Vì vậy, tôi vừa tạo liên kết maps: // HOẶC maps.google.com/, sử dụng các thông số trên.
** CẬP NHẬT **
thật đáng buồn, $ .browser.device không hoạt động kể từ jquery 1.9 (nguồn - http://api.jquery.com/jquery.browser )