var VtmEkispert = function (options) { var baseId = options.id; var resultContentsId = options.resultContentsId; var resultId = options.resultId; var corporationBind = options.corporationBind; var dateTimeApp; var stationApp1; var stationApp2; var conditonApp; var resultApp; var listeners = {}; var storage = localStorage; var transferTimeMostMargin = "T3221233232319:F332112212000:A23121121:"; var transferTimeNormal = "T3221233232319:F332112212000:A23121141:"; var transferTimeLessMargin = "T3221233232319:F332112212000:A23121111:"; var answerCount = 3; var radius = 10000; var fromLocationText = "マップから指定した出発地"; var toLocationText = "マップから指定した到着地"; var yourLocationText = "現在地"; //経路探索用変数 var from, to; var viaList = []; var fromLocation, toLocation; var language = "ja"; var isiPhone = navigator.userAgent.match(/iPhone/i) != null; var isAndroid_phone = (navigator.userAgent.match(/Android/i) != null && navigator.userAgent.match(/Mobile/i) != null); init(); /** * 初期化処理 */ function init() { language = storage.getItem("language") || "ja"; var buffer = ''; buffer += '
'; //メッセージモーダル buffer += ''; buffer += '
'; buffer += '
'; buffer += '
' + output('出発地', 'From') + '
入力1
'; buffer += '
'; buffer += '
' + output("到着地", "To") + '
入力2
'; buffer += '
'; buffer += output("
※住所は丁目、番地まで指定できます(例:敦賀市中央町2-1-1)
", ""); if (typeof options.forWebLink != "undefined" && options.forWebLink) { buffer += '
'; buffer += output("※" + options.providerName.ja + "外が出発地、目的地の検索は", "Search for areas outside" + options.providerName.en) + '' + output("こちら", "link") + ''; buffer += '
'; } buffer += '
' + output("検索日時を指定する", "Date") + '
'; buffer += '
日付
'; buffer += '
' + output("検索条件を設定する", "Setting") + '
'; buffer += '
探索条件
'; buffer += '' + output("検索する", "Search") + ''; //駅の履歴 buffer += '
' + output("検索履歴から指定", "Route search history") + '
'; buffer += '' + output("履歴一覧を表示", "Show history list") + ''; //探索履歴 buffer += '
' + output("Myコースを検索", "Route search My course") + '
'; buffer += '
' + output("登録済みのMyコースはありません", "There is no My course") + '
'; buffer += '
'; buffer += ''; document.getElementById(options.id).innerHTML = buffer; //履歴のボタン addEvent(document.getElementById(baseId + "_openHistory"), "click", function () { if (storage.getItem(VTM_RESULT_LOCAL_STORAGE) && typeof JSON.parse(storage.getItem(VTM_RESULT_LOCAL_STORAGE)).point != "undefined") { var history = JSON.parse(storage.getItem(VTM_RESULT_LOCAL_STORAGE)); var pointHistory = ""; for (var i = 0; i < history.point.length; i++) { pointHistory += '
'; pointHistory += history.point[i].name; pointHistory += '
'; pointHistory += ''; pointHistory += ''; pointHistory += '
'; pointHistory += '
'; } if (language == "ja") { displayMessage("出発・到着地の履歴", pointHistory); } else if (language == "en") { displayMessage("History of departure / arrival place", pointHistory); } for (var i = 0; i < history.point.length; i++) { addEvent(document.getElementById(baseId + "_depHistoryButton_" + String(i)), "click", function (e) { var n = e.srcElement.id.replace(baseId + "_depHistoryButton_", ""); setFromStation(history.point[parseInt(n)].name); $('#searchMessageModal').modal('hide'); }); addEvent(document.getElementById(baseId + "_arrHistoryButton_" + String(i)), "click", function (e) { var n = e.srcElement.id.replace(baseId + "_arrHistoryButton_", ""); setToStation(history.point[parseInt(n)].name); $('#searchMessageModal').modal('hide'); }); } } else { if (language == "ja") { displayMessage("出発・到着地の履歴", "履歴はありません"); } else if (language == "en") { displayMessage("History of departure / arrival place", "There is no history"); } } }); dateTimeApp = new expGuiDateTime(document.getElementById(baseId + "_dateTime")); dateTimeApp.setConfigure("agent", 1); dateTimeApp.setConfigure(dateTimeApp.SEARCHTYPE_LASTTRAIN_LABEL, "最終"); dateTimeApp.dispDateTime(dateTimeApp.SEARCHTYPE_DIA); // 駅名入力パーツ#1初期化 stationApp1 = new expGuiStation(document.getElementById(baseId + "_station_1")); stationApp1.setConfigure("apiURL", "https://api.vtfm.jp/"); stationApp1.setConfigure("agent", 1); stationApp1.setConfigure("key", VTM_EKISPERT_KEY); stationApp1.setConfigure("geolocation", true); stationApp1.bind("geolocation", function (status) { getLocationStatus(status); }); stationApp1.setStationSort([stationApp1.createSortObject("バス", "bus"), stationApp1.createSortObject("施設", "landmark"), stationApp1.createSortObject("住所", "address", false)]); stationApp1.bind("focus", function () { if (stationApp1.getStation() == fromLocationText) { stationApp1.setStation(""); delete fromLocation; } }); stationApp1.dispStation(); // 駅名入力パーツ#2初期化 stationApp2 = new expGuiStation(document.getElementById(baseId + "_station_2")); stationApp2.setConfigure("apiURL", "https://api.vtfm.jp/"); stationApp2.setConfigure("agent", 1); stationApp2.setConfigure("key", VTM_EKISPERT_KEY); stationApp2.setConfigure("geolocation", true); stationApp2.bind("geolocation", function (status) { getLocationStatus(status); }); stationApp2.setStationSort([stationApp1.createSortObject("バス", "bus"), stationApp1.createSortObject("施設", "landmark"), stationApp1.createSortObject("住所", "address", false)]); stationApp2.bind("focus", function () { if (stationApp2.getStation() == toLocationText) { stationApp2.setStation(""); delete toLocation; } }); stationApp2.dispStation(); // 探索条件パーツ初期化 conditonApp = new expGuiCondition(document.getElementById(baseId + "_condition")); var conditionArea = ''; conditionArea += '
'; conditionArea += '
'; conditionArea += '' + output("表示順", "Sort") + ''; conditionArea += '
'; conditionArea += ''; conditionArea += ''; conditionArea += ''; conditionArea += '
'; conditionArea += '
'; conditionArea += '
'; conditionArea += '' + output("徒歩速度", "Transfer Time") + ''; conditionArea += '
'; conditionArea += ''; conditionArea += ''; conditionArea += ''; conditionArea += '
'; conditionArea += '
'; conditionArea += '
'; document.getElementById(baseId + '_condition').innerHTML = conditionArea; // 経路表示パーツ初期化 var resultArea = ""; resultArea += '
'; resultArea += '' + output("この経路をMyコースに保存する", "Save this route to My course") + ''; resultArea += '
'; resultArea += '
'; resultArea += '
'; resultArea += '
'; resultArea += output('※コミュニティバス、福鉄バス同士の場合、乗継券が使えます', 'In case of community bus and Fuketsu bus, transfer ticket can be used ') + '(' + output('→乗継券とは?', 'What is a transfer ticket?') + ')'; resultArea += '
'; resultArea += ''; resultArea += '
'; resultArea += '
'; resultArea += '
'; document.getElementById(resultId).innerHTML = resultArea; resultApp = new expGuiCourse(document.getElementById(baseId + '_result')); resultApp.setConfigure("apiURL", "https://api.vtfm.jp/"); resultApp.setConfigure("PriceChange", true);// 変更を許可 resultApp.setConfigure("PriceChangeRefresh", true);// 再読み込みをオン resultApp.setConfigure("AssignDia", true); resultApp.setConfigure("CourseList", true); resultApp.setConfigure("tab", "hidden"); resultApp.setConfigure("shortName", true); resultApp.setConfigure("agent", 2); resultApp.setConfigure("key", VTM_EKISPERT_KEY); resultApp.setConfigure("traffic", { name: "徒歩", type: resultApp.TYPE_WALK }); //経路探索のイベント設定 addEvent(document.getElementById(baseId + "_swapStation"), "click", swapStation); addEvent(document.getElementById(baseId + "_searchButton"), "click", search); addEvent(document.getElementById(baseId + "_addResultButton"), "click", addResult); //トップに戻るボタン addEvent(document.getElementById(baseId + "_resultLinkTop"), "click", function () { $("html,body").animate({ scrollTop: 0 }); }); //運賃に関する表示 addEvent(document.getElementById(baseId + "_routeAlert"), "click", function () { if (language == "ja") { window.open("https://tsurugacity.vtfm.jp/faq.html"); } else { window.open("http://translate.google.co.jp/translate?hl=ja&sl=ja&tl=en&u=http%3A%2F%2Fwww.city.tsuruga.lg.jp%2F"); } }); //for WEBのリンク addEvent(document.getElementById(baseId + "_for_web_link"), "click", function () { if (language == "ja") { window.open("https://roote.ekispert.net/ja?provider=tsuruga"); } else { window.open("https://roote.ekispert.net/en"); } }); //履歴の復元 viewHistory(); //多言語対応 setLanguage(language); VtmCommon.addEventListener("languageChanged", function (languageStr) { setLanguage(languageStr); }); document.onclick = function (e) { if (e.srcElement.id.indexOf(baseId + "_station_1") == -1) { stationApp1.closeStationList(); } if (e.srcElement.id.indexOf(baseId + "_station_2") == -1) { stationApp2.closeStationList(); } }; } /** * 住所を設定する */ function setAddress(data) { stationApp1.setAddress(data); stationApp2.setAddress(data); stationApp1.setConfigure("address", true); stationApp2.setConfigure("address", true); } /** * GPS取得エラー */ function getLocationStatus(status) { if (typeof status == "undefined") { if (language == "ja") { displayMessage("エラー", "この端末では位置情報が取得できません。"); } else { displayMessage("Error", "Location information can not be acquired on this terminal."); } } else if (status == 1) { if (language == "ja") { displayMessage("エラー", "このページにはアクセス許可がないため、位置情報の取得に失敗しました。"); } else { displayMessage("Error", "The acquisition of the geolocation information failed because the page didn't have the permission to do it."); } } else if (status == 2) { if (language == "ja") { displayMessage("エラー", "内部的なエラーを返したため、位置情報の取得に失敗しました。"); } else { displayMessage("Error", "The acquisition of the geolocation failed because at least one internal source of position returned an internal error."); } } else if (status == 3) { if (language == "ja") { displayMessage("エラー", "The time allowed to acquire the geolocation, defined by timeout information was reached before the information was obtained."); } else { displayMessage("Error", "Address is incorrect"); } } } /** * 言語切替 */ function output(ja, en) { return '' + ja + '' + en + ''; } /** * 言語切替 */ function setLanguage(languageStr) { language = languageStr; // languageStrとekispertのlocaleのマッピング var languageStrToLocale = { "ja": "japanese", "en": "english", }; stationApp1.setConfigure("language", languageStrToLocale[language]); stationApp2.setConfigure("language", languageStrToLocale[language]); dateTimeApp.setConfigure("language", languageStrToLocale[language]); resultApp.setConfigure("language", languageStrToLocale[language]); stationApp1.setConfigure("apiParam", "language=" + language + "&provider=" + VTM_PROVIDER); stationApp2.setConfigure("apiParam", "language=" + language + "&provider=" + VTM_PROVIDER); if (language == "ja") { stationApp1.setConfigure("placeholder", "バス停・住所・施設名を入力"); stationApp2.setConfigure("placeholder", "バス停・住所・施設名を入力"); resultApp.unbind("external"); resultApp.bind("external", openOperationInformation, { text: "バスの運行情報", class: "external_button_1", type: "line", condition: isBuscatch }); resultApp.bind("external", openBusMap, { text: "地図で見る", class: "external_button_2", type: "line", condition: isBuscatch }); resultApp.bind("external", openDemandBus, { text: "デマンドバス予約", class: "external_button_3", type: "line", condition: isOperation }); resultApp.bind("external", function (index) { options.openMap(resultApp.getPointObject(index)); }, { text: "地図で見る", class: "external_button_4", type: "point", condition: isOpenMap }); } else if (language == "en") { stationApp1.setConfigure("placeholder", "Bus stop / Address / Facility name"); stationApp2.setConfigure("placeholder", "Bus stop / Address / Facility name"); resultApp.unbind("external"); resultApp.bind("external", openOperationInformation, { text: "Operation", class: "external_button_1", type: "line", condition: isBuscatch }); resultApp.bind("external", openBusMap, { text: "BusMap", class: "external_button_2", type: "line", condition: isBuscatch }); resultApp.bind("external", openDemandBus, { text: "Reservation", class: "external_button_3", type: "line", condition: isOperation }); resultApp.bind("external", function (index) { options.openMap(resultApp.getPointObject(index)); }, { text: "Map", class: "external_button_4", type: "point", condition: isOpenMap }); } } /** * メッセージの表示 */ function displayMessage(title, text) { document.getElementById(baseId + "_searchMessage_title").innerHTML = title; document.getElementById(baseId + "_searchMessage").innerHTML = text; $("#searchMessageModal").modal('show'); } /** * 履歴の表示 */ function viewHistory() { if (storage.getItem(VTM_RESULT_LOCAL_STORAGE)) { var history = JSON.parse(storage.getItem(VTM_RESULT_LOCAL_STORAGE)); if (typeof history.course != "undefined") { var historyBuffer = ''; for (var i = 0; i < history.course.length; i++) { if (history.course[i].from != fromLocationText && history.course[i].to != toLocationText && history.course[i].from != yourLocationText && history.course[i].to != yourLocationText) { historyBuffer += '' + history.course[i].from + ' → ' + history.course[i].to + ''; } } document.getElementById(baseId + "_history").innerHTML = historyBuffer; for (var i = 0; i < history.course.length; i++) { addEvent(document.getElementById(baseId + "_historyButton_" + String(i)), "click", function (e) { var n = e.srcElement.id.replace(baseId + "_historyButton_", ""); from = history.course[parseInt(n)].from; to = history.course[parseInt(n)].to; viaList = history.course[parseInt(n)].viaList; searchCourse(); }); } } } } /** * 発着地を保存 */ function addPoint() { var history = { point: [] }; if (storage.getItem(VTM_RESULT_LOCAL_STORAGE)) { history = JSON.parse(storage.getItem(VTM_RESULT_LOCAL_STORAGE)); if (typeof history.point == "undefined") { history.point = []; } for (var i = 0; i < history.point.length; i++) { if (history.point[i].name == from) { history.point.splice(i, 1); } } for (var i = 0; i < history.point.length; i++) { if (history.point[i].name == to) { history.point.splice(i, 1); } } } if (from != fromLocationText) { history.point.unshift({ id: (new Date().getTime()), name: from }); } if (to != toLocationText) { history.point.unshift({ id: (new Date().getTime()), name: to }); } storage.setItem(VTM_RESULT_LOCAL_STORAGE, JSON.stringify(history)); viewHistory(); } /** * 探索結果を保存 */ function addResult() { var history = { course: [] }; if (storage.getItem(VTM_RESULT_LOCAL_STORAGE)) { history = JSON.parse(storage.getItem(VTM_RESULT_LOCAL_STORAGE)); if (typeof history.course == "undefined") { history.course = []; } for (var i = 0; i < history.course.length; i++) { if (history.course[i].from == from && history.course[i].to == to) { history.course.splice(i, 1); break; } } } history.course.unshift({ id: (new Date().getTime()), from: from, to: to, viaList: viaList, serializeData: (typeof resultApp.getSerializeData() == "undefined") ? serializeData = resultApp.getSerializeDataAll()[0] : serializeData = resultApp.getSerializeData() }); storage.setItem(VTM_RESULT_LOCAL_STORAGE, JSON.stringify(history)); viewHistory(); if (language == "ja") { displayMessage("通知", "Myコースに保存しました"); } else { displayMessage("Information", "Saved to My course"); } } /** * バスキャッチのリンクを表示する条件 */ function isBuscatch(line) { if (line.Name !== undefined) { if (line.Name.indexOf("敦賀市") != -1 && line.Name.indexOf("予約便") == -1 || line.Name.indexOf("若狭線") != -1 || line.Name.indexOf("菅浜線") != -1) { return true; } else if (line.Name.indexOf("Tsuruga") != -1 && line.Name.indexOf("予約便") == -1) { return true; } } return false; } /** * デマンドバスのリンクを表示する条件 */ function isOperation(line) { if (line.Name !== undefined) { if (line.Name.indexOf("敦賀市") != -1 && line.Name.indexOf("予約便") != -1) { return true; } else if (line.Name.indexOf("Tsuruga") != -1 && line.Name.indexOf("予約便") != -1) { return true; } } return false; } /** * 地図リンクの条件 */ function isOpenMap(point) { if (typeof point.Station != 'undefined') { return true; } else { return false; } } /** * 出発地の指定 */ function setFromStation(name) { stationApp1.setStation(name); } /** * 到着地の指定 */ function setToStation(name) { stationApp2.setStation(name); } /** * 出発地の緯度経度指定 */ function setFromLocation(lat, lon) { stationApp1.setStation(fromLocationText); stationApp1.closeStationList(); fromLocation = { lat: parseFloat(lat), lon: parseFloat(lon) }; } /** * 到着地の緯度経度指定 */ function setToLocation(lat, lon) { stationApp2.setStation(toLocationText); stationApp2.closeStationList(); toLocation = { lat: parseFloat(lat), lon: parseFloat(lon) }; } /** * バスの運行情報表示 */ function openOperationInformation(sectionIndex) { var depDate = resultApp.getDepartureDate(); var url = "https://api.ekispert.jp/v1/json/"; url += "course/station?key=" + VTM_EKISPERT_KEY; url += "&serializeData=" + encodeURIComponent(resultApp.getSerializeData()); url += "§ionIndex=" + String(sectionIndex); url += "§ionOnly=false"; $.ajax({ type: 'GET', url: url, dataType: 'json', async: false, success: function (result) { var stations = []; for (var i = 0; i < result.ResultSet.Point.length; i++) { stations.push(result.ResultSet.Point[i].Station.code); } var link = "https://buscatch.jp/rt/pc/val_tfm.php?id=tsuruga"; link += "&ekispert_eki_code_list=" + stations.join(","); var time = getTextValue(result.ResultSet.Line[0].DepartureState.Datetime).split(":"); link += "&date=" + depDate.getFullYear() + (depDate.getMonth() < 9 ? "0" : "") + (depDate.getMonth() + 1) + (depDate.getDate() < 10 ? "0" : "") + depDate.getDate(); link += "&start_time=" + time[0] + ":" + time[1]; if (language == "en") { link += "&lang=en"; } if (isiPhone || isAndroid_phone) { link += "&sp=1"; } window.open(link); } }); } /** * バスマップの表示 */ function openBusMap(sectionIndex) { var depDate = resultApp.getDepartureDate(); var url = "https://api.ekispert.jp/v1/json/"; url += "course/station?key=" + VTM_EKISPERT_KEY; url += "&serializeData=" + encodeURIComponent(resultApp.getSerializeData()); url += "§ionIndex=" + String(sectionIndex); url += "§ionOnly=false"; $.ajax({ type: 'GET', url: url, dataType: 'json', async: false, success: function (result) { var stations = []; for (var i = 0; i < result.ResultSet.Point.length; i++) { stations.push(result.ResultSet.Point[i].Station.code); } var link = "https://buscatch.jp/rt/pc/val_tfm_map.php?id=tsuruga"; link += "&ekispert_eki_code_list=" + stations.join(","); link += "&from=" + resultApp.getPointObject(sectionIndex).code; var time = getTextValue(result.ResultSet.Line[0].DepartureState.Datetime).split(":"); link += "&date=" + depDate.getFullYear() + (depDate.getMonth() < 9 ? "0" : "") + (depDate.getMonth() + 1) + (depDate.getDate() < 10 ? "0" : "") + depDate.getDate(); link += "&start_time=" + time[0] + ":" + time[1]; if (language == "en") { link += "&lang=en"; } if (isiPhone || isAndroid_phone) { link += "&sp=1"; } window.open(link); } }); } /** * デマンドバスの表示 */ function openDemandBus() { window.open("https://tsurugacity.vtfm.jp/faq.html"); } /** * オブジェクトの値を取得 */ function getTextValue(obj) { if (typeof obj != "undefined") { if (typeof obj.text != "undefined") { return obj.text; } return obj; } else { return ""; } } /** * 発着地を入れ替え */ function swapStation() { if (stationApp1.getStation() != fromLocationText && stationApp2.getStation() != toLocationText) { // 候補を閉じる stationApp1.closeStationList(); stationApp2.closeStationList(); // 発着地リストを作成 var tmpStation = stationApp1.getStation(); stationApp1.setStation(stationApp2.getStation()); stationApp2.setStation(tmpStation); } } /** * 探索前に入力チェックを行う */ function checkData() { // メッセージの初期化 var errorMessage = []; if (!dateTimeApp.checkDate()) { // 日付入力パーツのチェック if (language == "ja") { errorMessage.push("日付を正しく入力してください"); } else { errorMessage.push("Please enter the date correctly"); } } if (stationApp1.getStation() == "") { // 駅名入力パーツの空チェック if (language == "ja") { errorMessage.push("出発地は必須です"); } else { errorMessage.push("Departure is required"); } } if (stationApp1.getStation() == yourLocationText && typeof stationApp1.getStationGeoPoint() == 'undefined') { if (language == "ja") { errorMessage.push("位置情報取得中です"); } else { errorMessage.push("Location information is being acquired."); } } if (stationApp2.getStation() == "") { // 駅名入力パーツの空チェック if (language == "ja") { errorMessage.push("目的地は必須です"); } else { errorMessage.push("Arrival is required"); } } else { if (stationApp1.getStation() == stationApp2.getStation()) { // 駅名同一チェック if (language == "ja") { errorMessage.push("出発地と到着地が同一です"); } else { errorMessage.push("Origin and destination are the same"); } } } if (stationApp2.getStation() == yourLocationText && typeof stationApp2.getStationGeoPoint() == 'undefined') { if (language == "ja") { errorMessage.push("位置情報取得中です"); } else { errorMessage.push("Location information is being acquired."); } } return errorMessage.join("
"); } /** * 住所判定 */ function isAddress(address) { if (address.match(/^(東京都|北海道|(京都|大阪)府|(青森|岩手|宮城|秋田|山形|福島|茨城|栃木|群馬|埼玉|千葉|神奈川|新潟|富山|石川|福井|山梨|長野|岐阜|静岡|愛知|三重|滋賀|兵庫|奈良|和歌山|鳥取|島根|岡山|広島|山口|徳島|香川|愛媛|高知|福岡|佐賀|長崎|熊本|大分|宮崎|鹿児島|沖縄)県)?(.{1,3}区|.{1,10}市|.{1,10}郡.{1,10}町|.{1,10}郡.{1,10}村|.{1,3}村|大島町|三宅島三宅村|三宅村|八丈島八丈町|八丈町)/) !== null) { return true; } else { return false; } } /** * 経路探索イベント */ function search() { //入力チェック後に動作 if (checkData() != "") { if (language == "ja") { displayMessage("下記の項目を確認してください", checkData()); } else { displayMessage("Information", checkData()); } } else if (!isEkispertForWeb()) { viaList = []; //出発地の取得 if (stationApp1.getStation() == yourLocationText) { viaList.push(stationApp1.getStationGeoPoint().lati_d + "," + stationApp1.getStationGeoPoint().longi_d + ",wgs84," + String(radius)); from = stationApp1.getStation(); } else { if (stationApp1.getStation() == fromLocationText) { viaList.push(String(fromLocation.lat) + "," + String(fromLocation.lon) + ",wgs84," + String(radius)); from = fromLocationText; } else if (stationApp1.getStationCode().split(",").length == 2) { viaList.push(stationApp1.getStationCode() + ",wgs84," + String(radius)); from = stationApp1.getStation(); } else if (stationApp1.getStationCode() != "") { viaList.push(stationApp1.getStationCode()); from = stationApp1.getStation(); } else { viaList.push(stationApp1.getStation()); to = stationApp1.getStation(); } } //到着地の取得 if (stationApp2.getStation() == yourLocationText) { viaList.push(stationApp2.getStationGeoPoint().lati_d + "," + stationApp2.getStationGeoPoint().longi_d + ",wgs84," + String(radius)); from = stationApp2.getStation(); } else { if (stationApp2.getStation() == toLocationText) { viaList.push(String(toLocation.lat) + "," + String(toLocation.lon) + ",wgs84," + String(radius)); to = toLocationText; } else if (stationApp2.getStationCode().split(",").length == 2) { viaList.push(stationApp2.getStationCode() + ",wgs84," + String(radius)); to = stationApp2.getStation(); } else if (stationApp2.getStationCode() != "") { viaList.push(stationApp2.getStationCode()); to = stationApp2.getStation(); } else { viaList.push(stationApp2.getStation()); to = stationApp2.getStation(); } } } searchCourse(); } /** * 駅すぱあとの探索実行 */ function searchCourse() { var searchWord = ""; // 候補を閉じる stationApp1.closeStationList(); stationApp2.closeStationList(); // 発着地リストを作成 searchWord += "viaList=" + viaList.join(":"); resultApp.setConfigure("from", from); resultApp.setConfigure("to", to); // 探索種別 searchWord += '&date=' + dateTimeApp.getDate(); switch (dateTimeApp.getSearchType()) { case dateTimeApp.SEARCHTYPE_DEPARTURE:// ダイヤ出発 searchWord += '&searchType=departure'; searchWord += '&time=' + dateTimeApp.getTime(); break; case dateTimeApp.SEARCHTYPE_ARRIVAL:// ダイヤ到着 searchWord += '&searchType=arrival'; searchWord += '&time=' + dateTimeApp.getTime(); break; case dateTimeApp.SEARCHTYPE_FIRSTTRAIN:// 始発 searchWord += '&searchType=firstTrain'; break; case dateTimeApp.SEARCHTYPE_LASTTRAIN:// 終電 searchWord += '&searchType=lastTrain'; break; case dateTimeApp.SEARCHTYPE_PLAIN:// 平均 searchWord += '&searchType=plain'; break; } // 探索結果数 searchWord += '&answerCount=' + answerCount; // ソート if (document.getElementById(baseId + "sortTime").checked) { searchWord += '&sort=' + conditonApp.SORT_TIME; } else if (document.getElementById(baseId + "sortPrice").checked) { searchWord += '&sort=' + conditonApp.SORT_PRICE; } else if (document.getElementById(baseId + "sortTransfer").checked) { searchWord += '&sort=' + conditonApp.SORT_TRANSFER; } // 探索条件 if (document.getElementById(baseId + "transferTimeMostMargin").checked) { searchWord += '&conditionDetail=' + transferTimeMostMargin; } else if (document.getElementById(baseId + "transferTimeNormal").checked) { searchWord += '&conditionDetail=' + transferTimeNormal; } else if (document.getElementById(baseId + "transferTimeLessMargin").checked) { searchWord += '&conditionDetail=' + transferTimeLessMargin; } searchWord += '&gcs=wgs84'; if (typeof corporationBind != 'undefined') { searchWord += '&corporationBind=' + corporationBind; } searchWord += '&language=' + language; // 探索を実行 resultApp.search(searchWord, conditonApp.PRICE_ONEWAY, result); } /** * 駅すぱあと for Webを開く */ function isEkispertForWeb() { if (stationApp1.getStation() != fromLocationText && stationApp2.getStation() != toLocationText && !isAddress(stationApp1.getStation()) && !isAddress(stationApp2.getStation()) && (stationApp1.getStationCode() == "" || stationApp2.getStationCode() == "")) { if (stationApp1.getStationCode().split(",").length != 2 && stationApp2.getStationCode().split(",").length != 2) { var link = "https://roote.ekispert.net/"; if (stationApp1.getStationCode() == "") { link += "?dep=" + encodeURIComponent(stationApp1.getStation()); } else if (stationApp1.getStation().indexOf("/福井鉄道バス") != -1) { link += "?dep=" + encodeURIComponent(stationApp1.getStation()); } else { link += "?dep=" + encodeURIComponent(stationApp1.getStation() + "/福井県敦賀市"); } if (stationApp2.getStationCode() == "") { link += "&arr=" + encodeURIComponent(stationApp2.getStation()); } else if (stationApp2.getStation().indexOf("/福井鉄道バス") != -1) { link += "?arr=" + encodeURIComponent(stationApp2.getStation()); } else { link += "&arr=" + encodeURIComponent(stationApp2.getStation() + "/福井県敦賀市"); } link += "&yyyymm=" + dateTimeApp.getDate().substr(0, 6); link += "&day=" + String(parseInt(dateTimeApp.getDate().substr(6, 2), 10)); switch (dateTimeApp.getSearchType()) { case dateTimeApp.SEARCHTYPE_DEPARTURE:// ダイヤ出発 link += '&type=dep'; link += '&hour=' + String(parseInt(dateTimeApp.getTime().substr(0, 2), 10)); link += '&minute10=' + dateTimeApp.getTime().substr(2, 1); link += '&minute1=' + dateTimeApp.getTime().substr(3, 1); break; case dateTimeApp.SEARCHTYPE_ARRIVAL:// ダイヤ到着 link += '&type=arr'; link += '&hour=' + String(parseInt(dateTimeApp.getTime().substr(0, 2), 10)); link += '&minute10=' + dateTimeApp.getTime().substr(2, 1); link += '&minute1=' + dateTimeApp.getTime().substr(3, 1); break; case dateTimeApp.SEARCHTYPE_FIRSTTRAIN:// 始発 link += '&type=first'; break; case dateTimeApp.SEARCHTYPE_LASTTRAIN:// 終電 link += '&type=last'; break; } link += "&provider=tsuruga"; window.open(link); return true; } } return false; } /** * 探索実行時のコールバック */ function result(isSuccess) { if (!isSuccess) { if (language == "ja") { displayMessage("エラー", "経路が見つかりませんでした"); } else { displayMessage("Error", "Route was not found"); } } else { document.getElementById(resultContentsId).style.display = "block"; var resultSet = resultApp.getResultAll(); var course; if (typeof resultSet.ResultSet.Course.length == 'undefined') { course = resultSet.ResultSet.Course; } else { course = resultSet.ResultSet.Course[0]; } var points = course.Route.Point; if (typeof listeners['arrivalStation'] != "undefined") { for (var i = 0; i < listeners['arrivalStation'].length; i++) { var point = JSON.parse(JSON.stringify(points[points.length - 1])); if (typeof point.GeoPoint != "undefined") { listeners['arrivalStation'][i](parseFloat(point.GeoPoint.lati_d), parseFloat(point.GeoPoint.longi_d), point.Name); } else { if (point.Name.match(/^[0-9]+.[0-9]+,[0-9]+.[0-9]+,wgs84$/) === null) { var geoPoint = point.Name.split(","); listeners['arrivalStation'][i](parseFloat(geoPoint[0]), parseFloat(geoPoint[1])); } } } } //スクロール $("html,body").animate({ scrollTop: $('#' + resultContentsId).offset().top }); //履歴へ登録 addPoint(); } } /** * イベントの設定(IE対応版) */ function addEvent(element, eventName, func) { if (element) { if (typeof eventName == 'string' && typeof func == 'function') { if (element.addEventListener) { element.addEventListener(eventName, func, false); } else if (element.attachEvent) { element.attachEvent("on" + eventName, func); } } } } /** * リスナー設定 */ function addEventListener(eventName, func) { if (typeof listeners[eventName] == "undefined") { listeners[eventName] = []; } listeners[eventName].push(func); } this.addEventListener = addEventListener; this.setFromStation = setFromStation; this.setToStation = setToStation; this.setFromLocation = setFromLocation; this.setToLocation = setToLocation; this.setAddress = setAddress; };