2011-12-11 16 views
5

Bir web kamerası görüntüsü ve PHP ve javascript kullanarak başka bazı verilerle birlikte lat ve lon göndermeye çalışıyorum - bir şey öğrenmeyi umuyordum, başladığım küçük bir proje. Lat ve lon'un kullanılabilir hale gelmesi için, lat ve lon alındıktan sonra web kamerası işlevini çağırmam gerekir. Çalıştığım javascript (geolocation kısmı Lynda.com'dan. Bunu JpegCam ile birleştirdim). Değerleri tutmak için lat ve lon div'ları ekledim. Ardından, getElementById() işlevini kullanarak lat ve uzun süren web kamerası işlevini now_go() olarak adlandırıyorum. Bu, kullanıcı konumlarını paylaştığı sürece harika çalışır. Yapmazlarsa, now_go() işlevi çağrılmaz. Ama eğer daha önce çağırırsam, kullanıcı konumlarını paylaşmaya karar verse bile, lat ve lon kullanılamaz. Yani kullanıcı oyunun paylaşmamayı seçip seçmediğini oyunda hangi aşamada söyleyebilirim? Bir kullanıcının konumlarını paylaşmayı seçip seçmediğini hangi noktada söyleyebilirim?

<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> 

Bu

ben bir işlevi dönüştü kamerası script parçası yüzden lat ve lon sonra diyebiliriz olduğunu getirilen olmuştur:

<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> 

eminim bu kod diğer sorunları vardır ama şu an böyle görünüyor. Ve beş yaşında olmak sanırım bir süreliğine bu şekilde kalacak.

Herhangi bir öneri veya öneri müthiş olacaktır.

sayesinde Mark

+0

Sana 'çifte değil kullandığınız neden emin değilim !! Bu durumu test etmek için navigator.geolocation. Varlığını test ediyorsanız, tek değil “if (! Navigator.geolocation) {alert ('Tarayıcınız Coğrafi Konum'u desteklemiyor.")} ' –

+0

Sorunuz için doğrudan yardımcı olmuyor, ancak değişken if ((geo = getGeoLocation())) biti içinde olabilir mi? Atama başarısız olursa, diğer bloktan sonra kullanmak başarısız olur. – Thor84no

+0

Burada bakınız: http://stackoverflow.com/questions/7463367/how-to-call-function-when-user-allows-or-denies-access-to-physical-location –

cevap

8

this link bakınız. Başka bir işleve geçmek sağlayan navigator.geolocation.getCurrentPosition() yöntemine ikinci bir argüman vardır:

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

Teşekkürler, tam da aradığım şey bu! – Mark