나는 이것이 찾기가 그렇게 어렵지 않을 것이라고 생각했지만 예상했던 것처럼 멋진 크로스 디바이스 기사를 찾는 것은 쉽지 않습니다.
모바일 장치의 브라우저를 열고 Google지도를 검색하거나지도 앱 (Apple지도 또는 Google지도)을 열고 경로를 직접 시작하는 링크를 만들고 싶습니다. 즉, 현재 위치에서 시작하여 지정된 지점에서 끝납니다 ( 위도 / 경도).
두 기기 (브라우저 스택 옆), Android와 iPhone에서 테스트 할 수 있습니다.
다음 링크는 Android에서만 작동합니다.
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
iPhone의 Chrome에서이 링크를 클릭하면 모바일 앱에 광고와 함께 데스크톱 버전에서 Google지도가 이상하게 열립니다.
이것은 iOS에서만 작동하며 Apple Maps를 열어 시작 위치를 입력하고 ( "현재 위치"를 선택할 수 있음) 경로를 시작합니다 = 원하는 동작. 이 링크를 클릭하면 Android에서 완전히 실패합니다.
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
maps : // 프로토콜을 확인하십시오.
그러한 링크를 만드는 우아한 교차 장치 방법이 있습니까? 모든 주요 모바일에서 작동하는 하나의 링크?
감사
업데이트 : 솔루션을 찾았습니다 (일종).
여기 내가 생각 해낸 것입니다. 작동하지만 내가 상상했던 것과는 다릅니다.
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 방식은 IOS 6 이상 작업을 시작합니다 응용 프로그램을, 매핑입니다. gmaps가 설치되어 있는지 테스트하고 URL로 무엇을할지 선택하는 방법이 있지만 그것은 내가 의도 한 바에 비해 너무 많은 것입니다. 그래서 방금 위의 매개 변수를 사용하여 maps : // OR maps.google.com/ 링크를 생성했습니다.
** 업데이트 **
슬프게도, $ .browser.device는 이후 일을하지 않는 JQuery와 1.9 (소스 - http://api.jquery.com/jquery.browser )