Android 谷歌地图发布链接;“当前位置”;作为源地址

Android 谷歌地图发布链接;“当前位置”;作为源地址,android,iphone,google-maps,gps,Android,Iphone,Google Maps,Gps,我在创建GoogleMapsLaunch链接时遇到了一个问题,该链接必须使用“当前位置”字符串作为源地址 问题在于何时需要生成此链接并与他人共享。在这种情况下,需要知道朋友的智能手机的区域设置,以便生成正确的链接 例如,以下链接仅适用于英语或英国语言环境的设备: 是否有任何通用的方法来创建这样一个链接,以便它可以在所有设备上工作,而不考虑它们的区域设置。问题在于谷歌地图启动链接中的saddr参数。它必须是三个选项之一: 源地址 A源位置(lat、lng) “当前地址”-告诉谷歌地图应用程序从当

我在创建GoogleMapsLaunch链接时遇到了一个问题,该链接必须使用“当前位置”字符串作为源地址

问题在于何时需要生成此链接并与他人共享。在这种情况下,需要知道朋友的智能手机的区域设置,以便生成正确的链接

例如,以下链接仅适用于英语或英国语言环境的设备:


是否有任何通用的方法来创建这样一个链接,以便它可以在所有设备上工作,而不考虑它们的区域设置。

问题在于谷歌地图启动链接中的
saddr
参数。它必须是三个选项之一:

  • 源地址
  • A源位置(lat、lng)
  • “当前地址”-告诉谷歌地图应用程序从当前位置开始的字符串
  • 前两个没有问题,但在大多数情况下,第三个被视为地址字符串,而不是获取当前位置的命令。如果它与启动链接的手机位于同一地区,则可以正常工作。例如,“Liue actuel”是法语的“Current location”(当前位置),可用于法语区域设置的设备,但不适用于任何其他区域设置的设备(例如英语) 如果您知道recepient的本地地址,这一事实可能不是问题,但在大多数情况下,您不知道

    我的解决方案是使用帮助HTML页面,该页面接收目标地址/点作为GET参数,并生成带有适当区域设置中的用户位置pint或“当前位置”字符串作为源地址/点的Google启动链接

    我使用浏览器的地理定位api来检索位置和“当前位置”字符串的静态翻译数组

    这是HTML帮助页面的简单视觉结构:

    这是完整的HTML页面代码:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    
    <html>
    <head>
    </style>
            <meta http-equiv="content-type" content="text/html;charset=iso-8859-8-i">
            <title>My Title!</title>
            <script type="text/javascript">
    
                function getQueryVariable(variable) {
                    variable = variable.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
                    var regexS = "[\\?&]" + variable + "=([^&#]*)";
                    var regex = new RegExp(regexS);
                    var results = regex.exec(document.URL);
                    if (results == null)
                        return "";
                    else
                        return decodeURIComponent(results[1].replace(/\+/g, " "));
                }
    
    
    
                var langArr = new Array();
                langArr["nl"] = "Huidige locatie";     
                langArr["en"] = "Current Location";    
                langArr["fr"] = "Lieu actuel";         
                langArr["de"] = "Aktueller Ort";       
                langArr["it"] = "Posizione attuale";   
                langArr["ja"] = "???";
                langArr["es"] = "Ubicacion actual";
                langArr["ar"] = "?????? ??????";     
                langArr["ca"] = "Ubicacio actual";   
                langArr["cs"] = "Soucasna poloha";    
                langArr["da"] = "Aktuel lokalitet";
                langArr["el"] = "???????? ?????????";
                langArr["en-gb"] = "Current Location";
                langArr["en-us"] = "Current Location";
                langArr["fi"] = "Nykyinen sijainti";   
                langArr["he"] = "????? ?????";        
                langArr["he-il"] = "????? ?????";     
                langArr["hr"] = "Trenutna lokacija";  
                langArr["hu"] = "Jelenlegi helyszin"   
                langArr["id"] = "Lokasi Sekarang";     
                langArr["ko"] = "?? ??";             
                langArr["ms"] = "Lokasi Semasa";      
                langArr["no"] = "Nav?rende plassering";
                langArr["pl"] = "Biezace polozenie";   
                langArr["pt"] = "Localizacao Atual";    
                langArr["pt-pt"] = "Localizacao actual"; 
                langArr["ro"] = "Loc actual";           
                langArr["ru"] = "Òåêóùåå ðàçìåùåíèå";
                langArr["ru-ru"] = "Òåêóùåå ðàçìåùåíèå";
                langArr["sk"] = "Aktualna poloha";      
                langArr["sv"] = "Nuvarande plats";      
                langArr["th"] = "???????????????";     
                langArr["tr"] = "Su Anki Yer";         
                langArr["uk"] = "Ïîòî÷íå ì³ñöå";      
                langArr["vi"] = "V? tri Hi?n t?i";  
                langArr["zh-cn"] = "????";
                langArr["zh-tw"] = "????";
    
    
                var coordinate = getQueryVariable("ll");     
                var language = window.navigator.userLanguage || window.navigator.language;
                language = language.toLowerCase();
                if (navigator.geolocation != undefined)
                {
                    if  (coordinate != "")
    
                        navigator.geolocation.getCurrentPosition(successCallback,
                                                                errorCallback,
                                                                {maximumAge:000000});
                }
    
                else
                {   
                    errorCallback("");
                }
    
    
                function successCallback(position) {
                    if ( (navigator.userAgent.indexOf('iPhone') != -1)  || (navigator.userAgent.indexOf('iPad') != -1))
                                  window.location = "comgooglemaps://?saddr=" + position.coords.latitude + "," + position.coords.longitude + "&daddr=" + coordinate;
                                else
                                  window.location = "http://maps.google.com/maps?saddr=" + position.coords.latitude + "," + position.coords.longitude + "&daddr=" + coordinate;
    
                }
    
    
    
                function errorCallback(error) {
                    alert("Sorry cannot determine your current location. Please select \"Current Location\" as point A in google maps");
                    window.location = "http://maps.google.com/maps?saddr=" + langArr[language].replace(" ","+") + "&daddr=" + coordinate;
                }
    
    
            </script>
        </head>
        <body>
            <div STYLE="position:absolute; TOP:460px; LEFT:80px; WIDTH:370px; HEIGHT:50px" >    
                Please wait.<br/>Detecting your location...<br/>If nothing happens for long time please use the following link:
                <h3><a href="javascript:errorCallback('');">Manually launch Google Maps</a></h3>
            </div>
        </body>
    </html>
    
    
    我的头衔!
    函数getQueryVariable(变量){
    变量=变量。替换(/[\[]/,“\\\[”)。替换(/[\]]/,“\\\]”);
    var regexS=“[\\?&]”+variable+“=([^&\\]*)”;
    var regex=新的RegExp(regexS);
    var results=regex.exec(document.URL);
    如果(结果==null)
    返回“”;
    其他的
    返回组件(结果[1]。替换(/\+/g,”);
    }
    var langArr=新数组();
    langArr[“nl”]=“Huidige locatie”;
    langArr[“en”]=“当前位置”;
    langArr[“fr”]=“Liue actuel”;
    langArr[“de”]=“Aktueller Ort”;
    langArr[“it”]=“Posizione attuale”;
    langArr[“ja”]=“??”;
    langArr[“es”]=“Ubicacion实际值”;
    langArr[“ar”]=“ar”?”;
    langArr[“ca”]=“Ubicacio实际值”;
    langArr[“cs”]=“Soucasna poloha”;
    langArr[“da”]=“Aktuel lokalitet”;
    langArr[“el”]=“el”?”;
    langArr[“en gb”]=“当前位置”;
    langArr[“en-us”]=“当前位置”;
    langArr[“fi”]=“Nykyinen sijainti”;
    langArr[“他”]=“他”;
    langArr[“he il”]=“he il”?”;
    langArr[“hr”]=“Trenutna lokacija”;
    langArr[“hu”]=“Jelenlegi helyszin”
    langArr[“id”]=“Lokasi Sekarang”;
    langArr[“ko”]=“??”;
    langArr[“ms”]=“Lokasi Semasa”;
    langArr[“否”]=“导航?渲染plassering”;
    langArr[“pl”]=“Biezace polozenie”;
    langArr[“pt”]=“Localizacao Atual”;
    langArr[“pt”]=“Localizacao实际”;
    langArr[“ro”]=“Loc实际”;
    langArr[“ru”]=“Òåùùùùùùùùùùùùùùùùù”;
    langArr[“ru-ru”]=“Òåùùùùùùùùùùùùùùùùù”;
    langArr[“sk”]=“Aktualna poloha”;
    langArr[“sv”]=“努瓦朗德平原”;
    langArr[“th”]=“th”?”;
    langArr[“tr”]=“Su Anki Yer”;
    langArr[“英国”]=“英国”;
    langArr[“vi”]=“V?tri Hi?n t?i”;
    langArr[“zh cn”]=“??”;
    langArr[“zh tw”]=“??”;
    var坐标=getQueryVariable(“ll”);
    var language=window.navigator.userLanguage | | window.navigator.language;
    language=language.toLowerCase();
    if(navigator.geolocation!=未定义)
    {
    如果(坐标!=“”)
    navigator.geolocation.getCurrentPosition(successCallback,
    错误回调,
    {maximumAge:000000});
    }
    其他的
    {   
    错误回调(“”);
    }
    函数成功回调(位置){
    if((navigator.userAgent.indexOf('iPhone')!=-1)| |(navigator.userAgent.indexOf('iPad')!=-1))
    window.location=“comgooglemaps://?saddr=“+position.coords.latitude+”、“+position.coords.longitude+”&daddr=“+coordination;
    其他的
    window.location=”http://maps.google.com/maps?saddr=“+position.coords.latitude+”、“+position.coords.longitude+”&daddr=“+坐标;
    }
    函数errorCallback(错误){
    警报(“抱歉,无法确定您的当前位置。请选择“当前位置”作为谷歌地图中的A点”);
    window.location=”http://maps.google.com/maps?saddr=“+langArr[语言]。替换(“,“+”)+”&daddr=“+坐标;
    }
    请稍候。
    检测到您的位置…
    如果长时间没有任何事情发生,请使用