2011-12-27 31 views
2

我想在javascript中創建3D旋轉世界,從json動態定位點以顯示數據(如文本或圖片),並隨機從一個點旋轉到另一個點。使用Javascript和html5的GPS數據的3D世界

我想在開始開發之前收到示例和建議。你會使用哪些圖書館?你將使用哪一個algorythm來將世界相應地轉換爲GPS數據?

編輯:再次讀我的問題我想我應該更清楚。我想製作像Google地球一樣的東西,而不用縮放。在地球的三維模型上會有點,並且會從一個點轉到另一個點。

+1

這會很酷。一旦完成,就向您的應用程序發送鏈接(如果可能)。很想看到它。 – techfoobar 2011-12-27 14:47:08

+0

當然我會的! – 2011-12-27 15:52:34

+0

我一直在尋找類似的代碼或方法。三維旋轉地球瓦特/ JS。僅供參考,我找到了。 http://codecanyon.net/item/interactive-3d-globe/1172366 – 2012-02-05 12:17:19

回答

1

我實際上只是建立了這樣的東西,除了CSS3 & JS。以下是我爲處理設備方向而編寫的代碼。該位置需要平滑,但它應該可以幫助你。它不斷髮出「標題」&「傾斜角度」的事件。它綁定到一個更大的框架中,所以你需要把它拉出來並以不同的方式觸發事件,但這很容易做到。

(function($){ 
    // interface to the compass that gets normalized 
    $.Klass.add('HTML5.Orientation', $.Klass.Observable, { 
     init : function(config){ 
      this._super(); 

      $(window).bind('deviceorientation', this.bindMethod('orientationChange')); 
      this.degrees = 0; 
      this.config = config; 
     } 

     , orientationChange : function(ev){ 
      /** 
      * beta = angle that top of device is pointing 
      * gamma = angle that side of device is pointing 
      * 
      * In portrait only: if gamma closer to 0, pointing back. If closer to +- 180, pointing forward 
      **/ 
      var  oEv = ev.originalEvent 
       , heading = oEv.webkitCompassHeading - (this.config.zeroDeg || 0) 
       , beta = oEv.beta 
       , gamma = oEv.gamma 
       , orient = window.orientation 
       , aOrient = window.orientation % 180 
       , angle = (aOrient ? gamma : beta); 

      // ignore bad data 
      if(oEv.webkitCompassAccuracy == -1){ this.trigger('bad-compass'); return; } 
//   if(oEv.webkitCompassAccuracy >= 30){ this.trigger('inaccurate-compass'); return; } 

      // I think this means it's warming up :) 
      if(oEv.webkitCompassAccuracy == 0 ){ return; } 

      // normalize left or bottom being up 
      if((90 === orient) || (180 === orient)){ 
       angle = -angle; 
      } 

      // if in portrait and leaning forward, flip the angle around 90deg 
      if(!aOrient){ 
       if(Math.abs(gamma) > 90){ 
        angle = 180 - angle; 
       } 
      } 

      // normalize compass fliping from 0-->359 or visa-versa 
      if(this.lastHeading && (Math.abs(heading - this.lastHeading) > 180)){ 
       this.lastHeading = 360-this.lastHeading; 
      } 

      if(!this.heading){ this.heading = heading; } 

      this.trigger('heading', this.heading = this.heading + heading - this.lastHeading); 
      this.trigger('angle', this.angle = angle); 

      this.lastHeading = heading; 
     } 
    }); 
}(jQuery)); 
+0

這看起來像一個偉大的增強現實助手,對嗎? Upvoted分享!使用設備方向可能是一個很酷的功能添加。現在,我必須接近開始:旋轉帶有一些點的三維世界模型,從GPS數據動態生成,以一次顯示一個點。 A-la谷歌地球沒有縮放效果。 – 2011-12-27 18:14:30

+0

啊,我猜錯了你的問題。你說「根據GPS數據旋轉世界」,我認爲你的意思是定向:)你試圖「旋轉」什麼數據? – 2011-12-27 18:59:15

+0

哦,沒問題。你在這裏分享了很多代碼,我很想改變我對這個小項目的想法,所以我可以使用它:DD 我希望地球模型旋轉...在它的中心,在可見面上顯示一些GPS點,一次一個。它們將代表來自全球的用戶發送的數據。 也許更準確地說「旋轉」而不是「旋轉」? – 2011-12-27 23:08:40