2015-01-09 2 views
0

여기 내 코드입니다 위도가 & 경도를 포함하고있는 파일을 읽고 있는데, 배열의 파일 내용을 sotring하고 있습니다. 그러나 배열을 저장하고 싶지 않습니다. 다른 옵션이있어서 저장할 수 있습니다. & 프로세스 그것. 내가 원하는 내가 for 루프에서이 위도 & 경도와 맵을 생성하고자바 스크립트를 사용하여 파일을 읽고 구문 분석하는 방법은 무엇입니까?

, 나는 배열에서, 함수에이를 통과하고 당신은 여기

내 코드는 다른 방법에게 지연을 줄 수 :

function FileHelper() 
    {} 
    { 
     FileHelper.readStringFromFileAtPath = function(pathOfFileToReadFrom) 
     { 
      var request = new XMLHttpRequest(); 
      request.open("GET", pathOfFileToReadFrom, false); 
      request.send(null); 
      var returnValue = request.responseText; 

      return returnValue; 
     } 
    } 

    var pathOfFileToRead = "LatLon.txt"; 

    var contentsOfFileAsString = FileHelper.readStringFromFileAtPath 
    (
     pathOfFileToRead 
    ); 
    **var contentsArray=new Array(); 
    var contentsArray = contentsOfFileAsString.split('\n');** 




    function main() 
    { 
     for(i=0;i<contentsArray.length;i++) 
     { 
      addMarker(); 
     // setTimeout(function() { remveh1();}, 2000); 

     } 
    } 

    function addMarker() 
    { 
     console.log(contentsArray[i]); 
     split_contentArray=contentsArray[i].split(','); 
     vehicle_lat=split_contentArray[0]; 
     vehicle_lng=split_contentArray[1]; 


     var vehicle = new MQA.Poi({ lat: **vehicle_lat**, lng: **vehicle_lng** }); 
     var icon = new MQA.Icon('https://cdn2.iconfinder.com/data/icons/gpsmapicons/blue/gpsmapicons07.png', 26, 26);   
     vehicle.setIcon(icon); 
     vehicle.setKey("abc"); 

     map.addShape(vehicle); 

     vehicle.setRolloverContent("Vehicle # KA05 9999"); 

     } 




    function remveh1() 
    { 
     map.removeShape(map.removeShape(map.getByKey("abc"))); 
    };  
+1

* * "배열에서 지연이 줄 수 없다"- 당신은 무엇을 의미합니까 "지연"? 자신이하려는 일을보다 명확하게 설명하십시오. 마커가 맵마다 한 번에 하나씩 표시되기를 원한다면 각 배열 사이에 지연이 있으므로 배열은 여전히 ​​모든 것을 저장할 수있는 적절한 위치에 있습니다. 표시 할 코드를 변경해야합니다. – nnnnnn

+0

시도 중입니다. lat lon을 기반으로지도에 위치를 표시하려면 파일을 배열에 저장하고 싶지 않습니다. 파일을 저장하는 다른 방법이 있습니까 ?? – Rakesh

+0

배열에 어떤 문제가 있습니까? 일련의 좌표와 같은 많은 것들을 가지고 있다면, 배열은 그것들을 저장하는 가장 확실하고 최상의 구조입니다. 다시 말하면, 여러분은 여러분의 질문에 "지연"을 언급했지만 실제로 그것이 의미하는 것을 설명하지 않았습니다 이리. 달성하려는 효과는 무엇입니까? 사용자의 관점에서 원하는대로 작동하면 어떻게 될까요? – nnnnnn

답변

0

는 사실은 내가이 원하는, 내가지도에 위치를 표시 w/B 지연을 원한다. 나는 한 번에 모든 위치를 표시하고 위의 코드에서, 나는 내가 (간체) 배경로서

는, 브라우저가 동일한 스레드를 사용해야하는 방법, 하나씩 표시 할 다시 칠하기와 마찬가지로 JavaScript를 실행하십시오. 따라서 for 루프 내에서 페이지를 업데이트하려고하면 전체 루프가 실제 다시 칠하기 전에 완료됩니다. forsetTimeout() 호출을 기반으로 한 알고리즘으로 바꾸면됩니다. 타임 아웃 사이에 JS는 "비활성"(기술 용어로 의도되지 않음)이므로 브라우저는 다시 칠할 수 있습니다.

귀하의 코드는 표시되지 않습니다 함수에 대한 호출을 포함, 그래서 난 단지 아니라 글로벌 contentsArray()i 변수에 의존하지 않고 인수로 마커에 대한 참조를 받아 addMarker()을 변경, 그것에 상당히 최소한의 갱신을 제안 할 수 있습니다 이 addMarker()를 호출 할 때, 다음 main()를 다시 작성하면 해당 마커 개체를 전달합니다 :

function main() { 
    var i = -1; 
    (function processNext() { 
     if (++i < contentsArray.length) { // if there are markers left 
      addMarker(contentsArray[i]); // add the next one 
      setTimeout(function() {  // then delay before 
      remveh1();     // removing it and then 
      processNext();    // process the next one 
      }, 2000); 
     } 
    })(); 
} 

function addMarker(marker) 
{ 
    console.log(marker); 
    split_contentArray = marker.split(','); 

    // rest of your function here unchanged 
} 

(간체) 데모 : http://jsfiddle.net/3ao3wved/

+0

예, 예 ... 정말 고마워요. 마침내 얻었습니다 !!! – Rakesh

관련 문제