2011-12-11 57 views
5

我試圖發送經緯度和一個攝像頭圖像和一些其他數據使用PHP和JavaScript - 不要問,這只是一個小項目,我開始,希望能學到一些東西。爲了使緯度和緯度變得可用,我必須在經緯度和緯度經過檢索後調用攝像頭功能。這裏是我正在使用的javascript(地理位置部分來自Lynda.com,我將它與JpegCam合併)。我添加了lat和lon div來保存這些值。然後我打電話給網絡攝像機功能now_go(),它使用getElementById()獲取緯度和長度。只要用戶分享他們的位置,這項工作就很好。如果他們不這樣做,now_go()函數不會被調用。但如果我早些時候調用它,即使用戶決定分享他們的位置,經緯度也不可用。所以在遊戲的哪個階段,我可以告訴用戶是否選擇不分享?在什麼時候我可以告訴用戶是否選擇不分享他們的位置?

<script type="text/javascript"> 
    var t = new bwTable(); 
    var geo; 

    function getGeoLocation() { 
     try { 
      if(!! navigator.geolocation) return navigator.geolocation; 
      else return undefined; 
     } catch(e) { 
      return undefined; 
     } 
    } 

    function show_coords(position) { 
     var lat = position.coords.latitude; 
     var lon = position.coords.longitude; 
     element('lat').innerHTML = lat; 
     element('lon').innerHTML = lon; 
     t.updateRow(0, [ lat.toString(), lon.toString() ]); 
     dispResults(); 
     now_go(); 
    } 

    function dispResults() { 
     element('results').innerHTML = t.getTableHTML(); 

    } 

    function init() { 
     if((geo = getGeoLocation())) { 
      statusMessage('Using HTML5 Geolocation') 
      t.setHeader([ 'Latitude', 'Longitude' ]); 
      t.addRow([ '&nbsp;', '&nbsp;' ]); 
     } else { 
      statusMessage('HTML5 Geolocation is not supported.') 
     } 
     geo.getCurrentPosition(show_coords); 
    } 

    window.onload = function() { 
     init(); 
    } 
</script> 

這是我變成了一個功能攝像頭腳本的一部分,所以我可以以後緯度和經度調用它已提取:

<script language="JavaScript"> 
     function now_go(){ 
      var lat = null; 
      var lon = null; 
    if ($("#lat").length > 0){   
     var lat = document.getElementById('lat').innerHTML; 
     } 

      if ($("#lon").length > 0){   
     var lon = document.getElementById('lon').innerHTML; 
      } 
      webcam.set_api_url('webcam/test/' + lat + '/' + lon); 
    webcam.set_quality(90); // JPEG quality (1 - 100) 
    webcam.set_shutter_sound(true, '/mark/js/webcam/shutter.mp3'); 

     }  

</script> 

我敢肯定,這個代碼有其他問題,但這就是現在的樣子。上午五點,我認爲這會持續一段時間。

任何意見或建議將是了不起的。

謝謝, 馬克

+0

我不確定你爲什麼使用double而不是'!! navigator.geolocation'來測試這個條件。如果你正在測試它的存在,一個不是'if(!navigator.geolocation){alert('你的瀏覽器不支持地理位置。')}' –

+0

對你的問題沒有直接幫助,但不應該使用地理變量是否在if((geo = getGeoLocation()))位?如果分配失敗,在else塊之後使用它將失敗。 – Thor84no

+0

請參閱這裏:http://stackoverflow.com/questions/7463367/how-to-call-function-when-user-allows-or-denies-access-to-physical-location –

回答

8

this link。 navigator.geolocation.getCurrentPosition()方法有第二個參數,它允許你傳入另一​​個函數:

navigator.geolocation.getCurrentPosition(show_coords, function(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; 
    } 
}); 
+0

謝謝,那就是我一直在尋找的! – Mark

相關問題