比较JavaScript中两个值的值

时间:2015-11-03 06:30:49

标签: javascript csv google-maps-api-3

我有两个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文件(站点坐标)中检索纬度和经度。

1 个答案:

答案 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")]