簡體   English   中英

如何使用mapstraction延遲標記加載openlayers地圖

[英]how to delay marker loading openlayers map with mapstraction

我有一個頁面,該頁面在通過mapstraction使用的openlayers地圖中顯示10個標記。

我想先加載地圖,然后每秒鍾一遍又一遍地說一遍,我嘗試使用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()函數正確執行,並在放置alert()時可以看到一直在創建標記對象,但是由於某些原因,第一個標記被繪制后,其他標記就被創建了沒有在地圖上標繪。

歡迎任何幫助或建議

謝謝

嘗試使用setInterval()代替setTimeout()。

一定是這樣的

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一起正常使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM