none
請教如何跳出 詢問使用者是否允許存取的提示 RRS feed

  • 問題

  • 菜鳥寶寶在做地圖定位的時候,發現MVC開發的時候會跳出詢問,運作也是正常,但是發佈上線之後,地圖定位會一直跳出GPS定位失敗

    探究原因應該是沒有跳出讓使用者授權APP存取使用者位置的提示,所以當然就沒抓到...(應該是...吧?)

    有搜尋了一下解法,不過似乎沒有找到(還是其實有...但是寶寶沒看懂orz)

    前端程式碼如下,是用按鈕去取得GPS定位資訊,然後把經緯度傳到後端

    關於提示授權的部分,是否有大大可以幫忙,十分感謝^^"

    <head>
        <meta charset="utf-8">
        <title> </title>
        <style>
            #hide input:not(#submit) {
                display: none;
            }
        </style>
        <script>
            window.onload = () => {
                const $ = id => document.getElementById(id)
                const geoYes = evt => {
                    const { latitude, longitude, accuracy } = evt.coords
                   
                    $('lat').value = `${latitude}`;
                    $('lng').value = `${longitude}`;
                    $('acc').value = `誤差: ${accuracy}公尺`;
                }
                const geoNo = () => alert('GPS取得失敗');
                if (navigator.geolocation) {
                    // 支援GPS地理定位
                    navigator.geolocation.getCurrentPosition(geoYes, geoNo);
                }
                else {
                    alert("目前GPS無法定位");
                }
                $('hide').onsubmit = e => {
                    const data = [$('lat').value, $('lng').value, $('acc').value]
                    alert(data.join('\n'));
                    return false
                };
            }
        </script>
    </head>
    <body>
        <h1></h1>
            <form action="~/Common/List" method="post">
            <input type="hidden" id="lat" name="lat">
            <input type="hidden" id="lng" name="lng">
           
            <input type="submit" id="submit" value="限時排行榜">
        </form>
    
    </body>
    

    2020年4月19日 上午 07:12

解答

  • 您可以這樣寫:

    <head>
        <meta charset="utf-8">
        <title> </title>
        <style>
            #hide input:not(#submit) {
                display: none;
            }
        </style>
    </head>
    <body>
        <form id="hidden" action="~/Common/List" method="post">
            <input type="hidden" id="lat" name="lat"/>
            <input type="hidden" id="lng" name="lng"/>
            <input type="hidden" id="acc" name="acc"/>
            <input type="submit" value="限時排行榜"/>
        </form>
        <script src="https://code.jquery.com/jquery-3.5.0.min.js" integrity="sha256-xNzN2a4ltkB44Mc/Jz3pT4iU1cmeR0FkXs4pru/JxaQ=" crossorigin="anonymous"></script>
        <script>
            $(document).ready(function () {
                function geoYes(evt) {
                    $('#lat').val(evt.coords.latitude);
                    $('#lng').val(evt.coords.longitude);
                    $('#acc').val(evt.coords.accuracy);
                    $("#hidden").submit();
                }
                function geoNo() {
                    alert('GPS取得失敗');
                }
                if (navigator.geolocation) {
                    // 支援GPS地理定位
                    navigator.geolocation.getCurrentPosition(geoYes, geoNo, {
                        enableHighAccuracy: true,
                        timeout: 5000,
                        maximumAge: 0
                    });
                }
                else {
                    alert("目前GPS無法定位");
                }
                $('#hidden').on('submit', function (e) {
                    e.preventDefault();
                    alert("latitude:" + $('#lat').val() + ", longitude:" + $('#lng').val() + ", accuracy:" + $('#acc').val());
                    this.submit();
                });
            });
        </script>
    </body>

    • 已標示為解答 babytrainee 2020年4月21日 上午 04:51
    2020年4月19日 下午 12:17
  • 解決了感謝~

    其實後來發現是只要DNS經過https認證就可以自動開啟詢問了

    • 已標示為解答 babytrainee 2020年4月21日 上午 04:51
    2020年4月21日 上午 04:47

所有回覆

  • 您可以這樣寫:

    <head>
        <meta charset="utf-8">
        <title> </title>
        <style>
            #hide input:not(#submit) {
                display: none;
            }
        </style>
    </head>
    <body>
        <form id="hidden" action="~/Common/List" method="post">
            <input type="hidden" id="lat" name="lat"/>
            <input type="hidden" id="lng" name="lng"/>
            <input type="hidden" id="acc" name="acc"/>
            <input type="submit" value="限時排行榜"/>
        </form>
        <script src="https://code.jquery.com/jquery-3.5.0.min.js" integrity="sha256-xNzN2a4ltkB44Mc/Jz3pT4iU1cmeR0FkXs4pru/JxaQ=" crossorigin="anonymous"></script>
        <script>
            $(document).ready(function () {
                function geoYes(evt) {
                    $('#lat').val(evt.coords.latitude);
                    $('#lng').val(evt.coords.longitude);
                    $('#acc').val(evt.coords.accuracy);
                    $("#hidden").submit();
                }
                function geoNo() {
                    alert('GPS取得失敗');
                }
                if (navigator.geolocation) {
                    // 支援GPS地理定位
                    navigator.geolocation.getCurrentPosition(geoYes, geoNo, {
                        enableHighAccuracy: true,
                        timeout: 5000,
                        maximumAge: 0
                    });
                }
                else {
                    alert("目前GPS無法定位");
                }
                $('#hidden').on('submit', function (e) {
                    e.preventDefault();
                    alert("latitude:" + $('#lat').val() + ", longitude:" + $('#lng').val() + ", accuracy:" + $('#acc').val());
                    this.submit();
                });
            });
        </script>
    </body>

    • 已標示為解答 babytrainee 2020年4月21日 上午 04:51
    2020年4月19日 下午 12:17
  • 解決了感謝~

    其實後來發現是只要DNS經過https認證就可以自動開啟詢問了

    • 已標示為解答 babytrainee 2020年4月21日 上午 04:51
    2020年4月21日 上午 04:47