将.txt文件中的坐标放到Javascript数组

时间:2016-12-08 15:49:56

标签: javascript arrays google-maps coordinates google-maps-markers

我得到了带有这样坐标的txt文件:

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 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]
 ];

所以我可以像这样使用循环放置多个标记:

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));

  }

}

任何想法如何让它发挥作用?

感谢:!)

感谢您的快速反应。

我会让自己变得更加简单(这是我使用JS的第一次见证)

我有同样的文件:

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 locations = [
[3.180967,101.715546],
[3.200848,101.616669],
[3.147372,101.597443],
[3.19125,101.710052]
];

提前致谢)

1 个答案:

答案 0 :(得分:1)

解析数据

使用String#split将文本拆分为一个行数组,然后将每一行拆分为一个数组:

&#13;
&#13;
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);
&#13;
&#13;
&#13;

获取数据

根据您计划支持的浏览器,您可以XMLHttpRequest或更新fetch。如果可以,这个简单方法将使用fetch,并回退到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);