2011-09-07 44 views
0

映射我有顯示器10個標記在地圖的OpenLayers經由mapstraction使用的頁面。如何拖延標記加載的OpenLayers與mapstraction

我想加載地圖第一標記,然後一個接一個地說以後每一秒,我嘗試使用window.setTimeout()之後,它停止加載地圖,並加載只有第一個標記。

var map; 
    var lat = new Array() ; 
    lat=${latitude}; 
    var lon= new Array(); 
    lon=${longitude}; 
    var oneByOneCounter=0; 
    var count=10; 
    function initMap(){ 
     map = new Mapstraction('mymap','openlayers'); 
     map.setCenter(new LatLonPoint(0.0,0.0)); 
     map.addControls({pan: true, zoom:'small', map_type:true}); 
     renderMarkerOneByOne(); 
     map.autoCenterAndZoom(); 
    }; 


    function renderMarkerOneByOne() { 
    if (oneByOneCounter < count) { 
     latitude= lat[oneByOneCounter]; 
     longitude= lon[oneByOneCounter]; 
     var point = new LatLonPoint(latitude,longitude); 
     var marker = new Marker(point); 
     var info = "("+(oneByOneCounter+1)+")"; 
     marker.setInfoBubble(info); 
     marker.setHover(true); 
     marker.setIcon('icon_green.png', [27,31]); 
     map.addMarker(marker);  
     oneByOneCounter++; 
     window.setTimeout("renderMarkerOneByOne()", 1000); 
    } else { 
     oneByOneCounter = 0; 
    } 
    } 

我無法揣摩出我做錯了renderMarkerOneByOne()函數正確執行和把警報()我可以看到標記對象是越來越創建了所有的時間,但對於之後的某些原因第一個標記被繪製,其他標記不會被繪製在地圖上。

任何幫助或建議表示歡迎

感謝

回答

0

相反的setTimeout(的),嘗試的setInterval()。

+0

我居然發現了問題,這是不符合循環的問題,它是與map.autoCenterAndZoom功能的問題。這個函數在迭代中失去了它的價值。 後,我用setCenterAndZoom()函數,它的工作就像魅力。 –

0

它必須是這樣的

var map; 
var lat = new Array() ; 
lat=${latitude}; 
var lon= new Array(); 
lon=${longitude}; 
var oneByOneCounter=0; 
var count=10; 
var centerPoint; 
function initMap(){ 
    map = new Mapstraction('mymap','openlayers');  
    map.addControls({pan: true, zoom:'small', map_type:true}); 
    centerPoint= new LatLonPoint(lat[0],lon[0]);// or any point anyone wants to put center 
    renderMarkerOneByOne(); 
    map.setCenterAndZoom(centerPoint,"desired zoom level"); 
}; 

我找到了解決辦法浪費太多時間在調試的代碼之後。的mapstraction功能很多不符合的OpenLayers API正常工作