EdwardK
EdwardK

Reputation: 59

Put coordinates from .txt file to Javascript array

I got txt file with such coordinates:

21.178797 56.888384
21.373250 56.588044
24.136921 56.965521
26.231814 56.858971
24.123382 56.951146
25.399601 57.540989
24.542900 57.090442

I need to put them in this type of array :

var locations = [
 ['Title A', 3.180967,101.715546, 1],
 ['Title B', 3.200848,101.616669, 2],
 ['Title C', 3.147372,101.597443, 3],
 ['Title D', 3.19125,101.710052, 4]
 ];

So i can put multiple markers using loop like so :

for (i = 0; i < locations.length; i++) {  
markers = new google.maps.Marker({
     position: new google.maps.LatLng(locations[i][1], locations[i][2]),
     map: map
     });

     google.maps.event.addListener(marker, 'click', (function(markers, i) {
     return function() {
         infowindow.setContent(locations[i][0]);
         infowindow.open(map, marker);
     }
})(marker, i));

  }

}

Any ideas how i can make it work?

Thanks!:)

Thanks for your quick response guys.

I'll make it a little bit simplier for myself(it's my firs expirience using JS)

I have same file :

21.178797 56.888384
21.373250 56.588044
24.136921 56.965521
26.231814 56.858971
24.123382 56.951146
25.399601 57.540989
24.542900 57.090442

And i need array to look like that :

var locations = [
[3.180967,101.715546],
[3.200848,101.616669],
[3.147372,101.597443],
[3.19125,101.710052]
];

Thanks in advance)

Upvotes: 1

Views: 867

Answers (1)

Ori Drori
Ori Drori

Reputation: 191976

Parsing the data

Use String#split to split the text into an array of lines, and then to split each line to an array:

var str = `21.178797 56.888384
21.373250 56.588044
24.136921 56.965521
26.231814 56.858971
24.123382 56.951146
25.399601 57.540989
24.542900 57.090442`;

var result = str.split('\n').map(function(line, index) {
  return ['Title ' + String.fromCharCode(index + 65)].concat(line.split(' '));  
});

console.log(result);

Getting the data

Depending on the browsers you plan to support, you can XMLHttpRequest or the newer fetch. This simple method will use fetch if it can, and fallback to XMLHttpRequest:

function getData(path, cb) {
    var oReq;

    if (window.fetch) {
        window.fetch(path)
            .then(function(response) {
                return response.text();
            })
            .then(cb);
    } else {
        oReq = new XMLHttpRequest();
        oReq.addEventListener("load", function() {
            cb(this.responseText);
        });
        oReq.open("GET", path);
        oReq.send();
    }
}

function parseData(data) {
    var coo = str.split('\n').map(function(line, index) {
        return ['Title ' + String.fromCharCode(index + 65)].concat(line.split(' '));  
    });

    // your code that uses coo
}

getData('coo.txt', parseData);

Upvotes: 1

Related Questions