2011-09-30 12 views
6

ジオロケーションライブラリを使用してユーザーの場所を表示するスクリプトを作成しましたが、すべて正常に動作します。 PhoneGapを使用してこのHTML 5スクリプトをエクスポートしています。設定 - >ロケーションサービスでMy AppがOnに設定されていることがわかります。だから私は私が私のアプリケーションを実行するたびに私は通常のプロンプト "....あなたの現在の場所を使用したいですか? [許可しない]または[OK]を選択します。HTML 5 geolocation using phoneGap

[マイアプリを開くたびに[許可する]をクリックしないようにすることはできません。アプリが[サービス] - [ロケーションの設定]の設定を使用していない理由はありますか?以下は、簡単なスクリプトです:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta name="apple-mobile-web-app-capable" content="yes" /> 

     <meta name="apple-mobile-web-app-status-bar-style" content="black" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 

     <link rel="apple-touch-icon-precomposed" href="custom_icon_precomposed.png"/> 
     <link rel="apple-touch-startup-image" href="apple-touch-icon-precomposed.png"> 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script> 
      <script> 

       jQuery(window).ready(function(){ 
            jQuery("#btnInit").click(initiate_watchlocation); 
            jQuery("#btnStop").click(stop_watchlocation); 
            }); 

       var watchProcess = null; 

       function initiate_watchlocation() { 
        if (watchProcess == null) { 
         watchProcess = navigator.geolocation.watchPosition(handle_geolocation_query, handle_errors, {enableHighAccuracy:true}); 
        } 
       } 

       function stop_watchlocation() { 
        if (watchProcess != null) 
        { 
         navigator.geolocation.clearWatch(watchProcess); 
         watchProcess = null; 
        } 
       } 

       function handle_errors(error) 
       { 
        switch(error.code) 
        { 
         case error.PERMISSION_DENIED: alert("user did not share geolocation data"); 
         break; 

         case error.POSITION_UNAVAILABLE: alert("could not detect current position"); 
         break; 

         case error.TIMEOUT: alert("retrieving position timedout"); 
         break; 

         default: alert("unknown error"); 
         break; 
        } 
       } 

       function handle_geolocation_query(position) { 
        var text = "Latitude: " + position.coords.latitude + "<br/>" + 
        "Longitude: " + position.coords.longitude + "<br/>" + 
        "Accuracy: " + position.coords.accuracy + "m<br/>" + 
        "Time: " + new Date(position.timestamp); 
        jQuery("#info").html(text); 

        var image_url = "http://maps.google.com/maps/api/staticmap?sensor=false&center=" + position.coords.latitude + ',' + position.coords.longitude + 
        "&zoom=14&size=300x400&markers=color:blue|label:S|" + position.coords.latitude + ',' + position.coords.longitude; 

        jQuery("#map").remove(); 
        jQuery(document.body).append( 
               jQuery(document.createElement("img")).attr("src", image_url).attr('id','map') 
               ); 
       } 
       </script> 
      </head> 
    <body> 
     <div> 
      <button id="btnInit" >Monitor my location</button> 

      <button id="btnStop" >Stop monitoring</button> 
     </div> 
     <div id="info"></div> 
    </body> 
</html> 

答えて

2

OK、私はすべての上に見て、デバイスがその後、ネイティブの機能を利用するためにその中にあなたwindow.readyのjqueryのを呼び出す準備ができてすることはあなたが待つ必要がありました。私が探していた答えを見つけ出すためには、凝っていたのです。

 // Wait for PhoneGap to load 
     // 
     document.addEventListener("deviceready", onDeviceReady, false); 

     // PhoneGap is ready 
     // 
     function onDeviceReady() { 
      jQuery(window).ready(function(){ 
       jQuery("#btnInit").click(initiate_watchlocation); 
       jQuery("#btnStop").click(stop_watchlocation); 
      }); 

     }