2016-07-02 4 views
1

iOSアプリケーションを作成しています。ここでは、ページが読み込まれるたびに現在の緯度経度を判断する必要があります。私はイベントハンドラから経度と緯度にアクセスし、最新の座標をサードパーティのサーバに渡す必要があります。jQuery Mobileで「pageshow」の経度と緯度の座標を取得する

私はコルドバのnavigator.geolocation.getCurrentPositionを使用して座標を取得することができただけに助けが必要:座標にページが読み込ま

  • は、外部のURLにGETリクエストに座標値を追加するたびにキャプチャ

    ですので、以下のgetlocationスクリプトで生成された値をキャプチャするための正しい構文を教えてください。そうすれば、coordsをurlに追加すると、coords = long/lat値は

    を生成した。ここに私pageshowのイベントハンドラのコードです:以下

    $("#HomePage").live("pageshow", 
    
            function() { 
            $.mobile.showPageLoadingMsg(); 
            $.get("http://[externalurl]/process.cfc?method=HomePage&CORDS=[LATEST COORDS VALUE]]&returnformat=json", {}, function(res) { 
              $.mobile.hidePageLoadingMsg(); 
              var s = ""; 
              for(var i=0; i<res.length; i++) { 
              s+= "<li><a href='employeedetails.html?Id=" + res[i].Id + "'>Employee Details</a></li>"; 
              s+= "<li><a href='OrgDetails.html?OrgId=" + res[i].OrgId + "'>OrgDetails</a></li>"; 
             } 
              $("#HomePageContent").html(s); 
              $("#HomePageContent").listview("refresh"); 
              },"json"); 
            }); 
    

    は、私は、ユーザーが現在の座標を取得するために使用しているコードです。私は、上記のjQuery関数に値を渡してGETリクエストに追加できるようにする方法を理解する必要があります。

    var x = document.getElementById( "demo");

       function getLocation() { 
           if (navigator.geolocation) { 
           navigator.geolocation.getCurrentPosition(showPosition); 
           } else { 
           x.innerHTML = "Geolocation is not supported by this browser."; 
           } 
           } 
    
           function showPosition(position) { 
           x.innerHTML = + position.coords.latitude + 
           "," + position.coords.longitude; 
           } 
    
  • +0

    jQuery Mobileを使用している、pageshowイベントのイベントハンドラを割り当てたコード例から推測します。これを反映するために、あなたの質問のタイトルとタグを更新しました。 –

    答えて

    2

    修正するためのいくつかの問題があります。

    まず、$.live()方法は、ずっと前に廃止されましたし、完全にバージョン1.9(http://api.jquery.com/live/)にjQueryのから削除されました。

    第2に、jQuery Mobileバージョン1.6(https://api.jquerymobile.com/pageshow/)のリリースで、jQuery Mobile pageshowイベントも廃止され、削除されます。

    ページが表示されたときに取得するためのあなたのイベントハンドラは、次のようになります。

    $(document).on("pagecontainershow", function(event, ui) { 
        var elmtId = $('body').pagecontainer('getActivePage').prop('id'); 
    
        if (elmtId == "HomePage") { 
         // YOUR CODE HERE 
        } 
    }); 
    

    上記pagecontainershowイベントハンドラ内から直接getCurrentPositionメソッドの実行からあなたを妨げるものは何もありません。それは、このような単純なものでした

    $(document).on("pagecontainershow", function(event, ui) { 
        var elmtId = $('body').pagecontainer('getActivePage').prop('id'); 
    
        if (elmtId == "HomePage") { 
         navigator.geolocation.getCurrentPosition(function(position) { 
         var element = document.getElementById('geolocation'); 
         element.innerHTML = position.coords.latitude 
              + ',' 
              + position.coords.longitude; 
         }, function(error) { 
          alert('code: ' + error.code + '\n' + 
            'message: ' + error.message + '\n'); 
         }); 
        } 
    
    }); 
    

    あなたは#HomePageは、jQueryのモバイルページを参照してないないことを確認し、ページ内の要素になるでしょう。 jQueryのモバイルページは、最も外側の要素(http://demos.jquerymobile.com/1.4.5/pages/)にdata-role="page"属性があります。

    +0

    pagecontainerイベントをページdivに添付することはできません。ページの作成を除いて、ドキュメントに添付する必要があります。あなたのコードは動作しません。 – Omar

    +0

    @Omar jQueryドキュメントでは、 'pagecontainershow'イベントをキャプチャする方法が複数あると思われます。 jQuery Mobileのドキュメント(http://api.jquerymobile.com/pagecontainer/)は、上の鉱山と基本的に同じ例を提供しています: '#event-show $("。いずれにしても、文書で「pagecontainershow」イベントがキャプチャされた場合の対応方法を示すために、回答を更新しました。 –

    +0

    ( "pagecontainershow"、function(event、ui){});ありがとうエリオット、私はあなたの提案されたコードを使用すると、あなたの提案されたコードを長く/緯度を使用して、これらの改造をライブの対にすることを約束します。 成功コールバックのエラー:Geolocation262329345:TypeError:nullはオブジェクトではありません'element.innerHTML = position.coords.latitude +'、 '+ position.coords.longitude') URLに値を追加するための正しい参照方法を教えてください – Claudio

    関連する問題