1

我正在使用谷歌地圖API v3。 我試圖運行下面的代碼,它工作在除IE以外的所有瀏覽器上。Google地圖標記動畫IE問題

你可以請建議任何需要在IE中工作的變化。

Fiddle Link

我的代碼是:

  var map; 
     var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 2, 
     mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var markers = []; 

     function initialize() { 
     map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
     from1 = new google.maps.LatLng(0,0); 
     to1 = new google.maps.LatLng(30,12); 

     from2 = new google.maps.LatLng(-30,15); 
     to2 = new google.maps.LatLng(10,-100); 

     from3 = new google.maps.LatLng(0,-50); 
     to3 = new google.maps.LatLng(0,50); 

     addMarker(from1,to1); 
     addMarker(from2,to2); 
     addMarker(from3,to3); 
     } 

     function addMarker(pos, dest) { 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: pos, 
      destination: dest 
     }); 

     google.maps.event.addListener(marker, 'click', function(event) { 
      fromLat = this.position.lat(); 
      fromLng = this.position.lng(); 
      toLat = this.destination.lat(); 
      toLng = this.destination.lng(); 

      // store a LatLng for each step of the animation 
      frames = []; 
      for (var percent = 0; percent < 1; percent += 0.01) { 
      curLat = fromLat + percent * (toLat - fromLat); 
      curLng = fromLng + percent * (toLng - fromLng); 
      frames.push(new google.maps.LatLng(curLat, curLng)); 
      } 

      move = function(marker, latlngs, index, wait, newDestination) { 
      marker.setPosition(latlngs[index]); 
      if(index != latlngs.length-1) { 
       // call the next "frame" of the animation 
       setTimeout(function() { 
       move(marker, latlngs, index+1, wait, newDestination); 
       }, wait); 
      } 
      else { 
       // assign new route 
       marker.position = marker.destination; 
       marker.destination = newDestination; 
      } 
      } 

      // begin animation, send back to origin after completion 
      move(marker, frames, 0, 20, marker.position); 
     }); 

     markers.push(marker); 
     } 
google.maps.event.addDomListener(window, 'load', initialize); 
+0

以何種方式它不能在IE瀏覽?意外的結果,JavaScript錯誤,...? – duncan

+0

我得到錯誤附近PUSH .. –

+0

@duncan我試着這個http://jsfiddle.net/yV6xv/3782/以避免推..這是工作..但標記消失.. –

回答

5

經過一番擺弄它看起來像一個打字的問題。因爲你沒有隱式地將變量框架聲明爲一個變量,即不確定它是一個數組,因此錯誤「對象不支持方法推送」。

你只需要改變:

frames = []; 

到:

var frames = []; 

測試中即8- 10

+0

你真棒。 。 萬分感謝.. –