我有两个csv文件,一个包含路由信息,这些文件将填充每个id的数据行,每行包含多个站。一个例子
id,route
abc,stationA:stationB:stationC
所以路由字段由:
分隔。
其他csv,包含每个电台和纬度和经度,如下:
stationcode,station name, latitude, longitude
1,stationA, 44.968046, -94.420307
基本上我想要做的就是找出用户在路线上的纬度和经度。所以基本上我会读取用户的路线有A,B和C站,然后我想从第二个csv 检索纬度和经度。
以下是我目前的情况:
$(document).ready(function () {
var markers = []; // define global array in script tag so you can use it in whole page
var infowindows = [];
var lat;
var lng;
var myCenter = new google.maps.LatLng(1.3000, 103.8000);
var mapProp = {
center: myCenter,
zoom: 6,
minZoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true
};
//google map object
var map = new google.maps.Map(document.getElementById("map"), mapProp);
//change event of input tag where type=file and id=filename
// mrt input
$("#filename").change(function (e) {
var ext = $("input#filename").val().split(".").pop().toLowerCase();
if ($.inArray(ext, ["csv"]) == -1) {
alert('Upload CSV');
return false;
}
if (e.target.files != undefined) {
var reader = new FileReader();
reader.onload = function (e) {
var csvval = e.target.result.split("\n");
var csvvalue;
var infowindow = new google.maps.InfoWindow();
for (var i = 0; i < csvval.length; i++) {
markers[i] = [];
csvvalue = csvval[i].split(",");
markers[i][0] = csvvalue[0]; //id
lat = csvvalue[2]; //latitude
lng = csvvalue[3]; //longitude
var stationname = csvvalue[1];
var stationcode = csvvalue[0];
markers[i][1] = new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
map: map
});
}
};
reader.readAsText(e.target.files.item(0));
}
return false;
});
// actual input csv data
$("#csvname").change(function (e) {
var ext = $("input#csvname").val().split(".").pop().toLowerCase();
if ($.inArray(ext, ["csv"]) == -1) {
alert('Upload CSV');
return false;
}
if (e.target.files != undefined) {
var reader = new FileReader();
reader.onload = function (e) {
var val = e.target.result.split("\n");
var value;
var infowindow = new google.maps.InfoWindow();
for (var i = 0; i < val.length; i++) {
value = val[i].split(",");
// extract the route information (start and stop station
var route = value[1];
// split route
var routeStations = route.split(":");
// compare station name to get lat and lng
}
};
reader.readAsText(e.target.files.item(0));
}
return false;
});
});
我的问题是我不知道如何使用来自csv的站名和路径数据从第二个csv文件(站点坐标)中检索纬度和经度。
答案 0 :(得分:1)
正如RobG在评论中所描述的那样:
在解析工作站CSV文件时(即在// Global variables.
var stationsCoordinates = {};
$("#filename").change(function (e) {
// some code
markers[i][1] = new google.maps.Marker(/* bla bla */);
// I do not know if you need stationname or stationcode
stationsCoordinates[stationcode] = {
lat: lat,
lng: lng
}
});
$("#csvname").change(function (e) {
// some code
var routeStations = route.split(":");
var station;
for (var i = 0; i < routeStations.length; i += 1) {
station = stationsCoordinates[routeStations[i]];
// Do something with that station.
// Use station.lat and station.lng
}
});
的回调中),在初始化工作站标记的位置,还要将数据记录在映射对象中。
然后在解析路径CSV文件时(即在AssemblyInfo.cs
的回调中),只需参考您的映射对象来检索工作站坐标。
结果:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]