我得到了带有这样坐标的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]
];
提前致谢)
答案 0 :(得分:1)
解析数据
使用String#split
将文本拆分为一个行数组,然后将每一行拆分为一个数组:
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;
获取数据
根据您计划支持的浏览器,您可以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);