मैंने सोचा था कि यह पता लगाना इतना कठिन नहीं होगा लेकिन प्रकट रूप से यह एक बढ़िया क्रॉस डिवाइस लेख खोजना आसान नहीं है, जैसे आप उम्मीद करेंगे।
मैं एक लिंक बनाना चाहता हूं जो या तो मोबाइल डिवाइस के ब्राउज़र को खोलता है और Google मानचित्र पर सर्फ करता है या एक मैप्स ऐप (ऐप्पल मैप्स या Google मैप्स) खोलता है और सीधे एक मार्ग शुरू करता है, अर्थात: वर्तमान स्थान पर शुरू होता है, एक दिए गए बिंदु पर समाप्त होता है ( अक्षांश / देशांतर)।
मैं दो उपकरणों (ब्राउज़रस्टैक के पास), एक Android और एक iPhone पर परीक्षण कर सकता हूं।
निम्न लिंक केवल एंड्रॉइड पर काम करता है:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
IPhone के क्रोम में इस लिंक पर क्लिक करने पर, यह मोबाइल एप्लिकेशन पर विज्ञापनों के साथ डेस्कटॉप संस्करण में Google मैप्स को अजीब तरह से खोलता है ...
यह केवल iOS पर काम करता है, Apple मैप्स को खोलते हुए मुझे एक स्टार्ट लोकेशन में प्रवेश करने के लिए कहता है (मैं "करंट लोकेशन" चुन सकता हूं) और रूट - वांछित व्यवहार शुरू कर सकता हूं। इस लिंक पर क्लिक करना पूरी तरह से Android पर विफल होता है:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
मानचित्र देखें: // प्रोटोकॉल।
क्या इस तरह के लिंक बनाने का एक सुरुचिपूर्ण क्रॉस डिवाइस तरीका है? एक लिंक जो सभी मुख्य मोबाइलों पर काम करता है?
धन्यवाद
अद्यतन: समाधान पाया (थोड़े)
यहाँ मैं के साथ आया हूँ। यह काफी नहीं है जो मैंने कल्पना की थी, हालांकि यह काम कर रहा है।
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.google.com/ लिंक।
** अपडेट करें **
दुख की बात है, $ .browser.device jquery के बाद से काम नहीं करता है 1.9 (स्रोत - http://api.jquery.com/jquery.browser )