2015-01-09 5 views
0

Вот мой код Я читаю файл, который содержит широту & longitude, я сортирую содержимое файла в массиве. Но я не хочу его хранить, есть ли какие-либо другие опции, чтобы я мог хранить & процесс Это.Как читать и анализировать файл с помощью java-скрипта?

Я генерируя карту с этими широчайшие & долготу в цикле, я передаю их к функции, в массиве вы не можете дать задержку, так что я хочу другой метод

Вот мой код:

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

на самом деле то, что я хочу, я хочу задержку б/ш положение отображения на карте. Из приведенного выше кода я отображаются все позиции в одно время, я хочу, чтобы отобразить их один за другим, как я должен делать это

По пути (упрощенный) фон, браузер использует ту же нить к запустить JavaScript так же, как и для перерисовки, поэтому, если вы попытаетесь обновить страницу в цикле for, весь цикл будет завершен до фактической перерисовки. Вы справитесь с этим, заменив for на алгоритм, основанный на вызовах setTimeout(). Между таймаутами JS «неактивен» (не предназначен как технический термин), поэтому браузер может перерисовывать.

Ваш код включает в себя вызовы функций, которые не показывают, так что я могу только предположить, достаточно минимальное обновление к нему, меняя addMarker() принять ссылку на маркер в качестве аргумента, а не полагаться на глобальные contentsArray() и i переменных , а затем переписывание main() передать соответствующий объект маркера, когда он вызывает addMarker():

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

Смежные вопросы