itsmo.vars.g_myroute_shapelayer = null;// Shapeレイヤー itsmo.vars.g_myroute_shapeline1 = null;// 線オブジェクト(経由) itsmo.vars.g_myroute_shapeline2 = null;// 線オブジェクト(カーソル) itsmo.vars.g_myroute_selmode = 0;// 選択した旗の種類 itsmo.vars.g_myroute_timerid = null; itsmo.vars.g_myroute_sellast = null;// 最後に選択された位置 //ルート詳細設定 itsmo.vars.g_myroute_configs = {}; itsmo.vars.g_myroute_configs.car = {};//車条件 itsmo.vars.g_myroute_configs.all = {};//電車・徒歩 itsmo.vars.g_myroute_flagid = []; itsmo.vars.g_myroute_tool = null;// ツールチップ itsmo.vars.g_myroute_first = 1;// 初期選択フラグ itsmo.vars.g_myroute_mode = null;// 探索モード itsmo.vars.g_myroute_car_stops = 5; itsmo.vars.g_myroute_all_stops = 2; itsmo.vars.g_myroute_isWalk = false; //ルート検索作業領域 itsmo.vars.g_myroute_work = '
'; // ルート検索 itsmo.myroute.route = null; //-------------------------------------------------------------------------------------------------- // パネルの状態変更 //-------------------------------------------------------------------------------------------------- itsmo.vars.g_myroute_panel_change = null; itsmo.myroute.myroute_panel_change = function(mode) { if(itsmo.vars.g_myroute_panel_change == mode && mode != 'close' ) return; // 初期化 itsmo.route.init(); if(itsmo.vars.g_myroute_shapelayer == null) { // 線 itsmo.vars.g_myroute_shapeline1 = new ZDC.Polyline([], { strokeColor : '#0000ff', strokeWeight : 3 }); itsmo.vars.g_myroute_shapeline2 = new ZDC.Polyline([], { strokeColor : '#5555ff', strokeWeight : 3, lineOpacity : 0.5 }); // シェイプレイヤー itsmo.vars.g_myroute_shapelayer = new itsmo.map.UserLayer(); itsmo.vars.g_myroute_shapelayer.add(itsmo.vars.g_myroute_shapeline1); itsmo.vars.g_myroute_shapelayer.add(itsmo.vars.g_myroute_shapeline2); itsmo.vars.g_myroute_shapeline1.hidden(); itsmo.vars.g_myroute_shapeline2.hidden(); } // 20081017 add [ for(var i = 0; i < 10; i++) { //if(itsmo.vars.g_myroute_stops[i]) delete itsmo.vars.g_myroute_stops[i]; itsmo.lib.document_off('ajax_myroute_panell'+i); } // 20081017 add ] itsmo.lib.document_off('ajax_myroute_panel2'); itsmo.lib.document_off('ajax_myroute_panel3'); itsmo.lib.document_off('ajax_myroute_panelall'); switch(mode) { case 'close':// 閉じる // 色々クリア for(var i = 0; i < 10; i++) { if (itsmo.vars.g_myroute_stops[i]) { delete itsmo.vars.g_myroute_stops[i]; } } itsmo.vars.g_myroute_mode = null; itsmo.myroute.myroute_flagclear(); itsmo.vars.g_myroute_routetitle = null; itsmo.map.setMouseCursor('hand'); itsmo.vars.g_myroute_first = 1; itsmo.myroute.map_vics_clear(); itsmo.myroute.myroute_panel_eventdel(); itsmo.myroute.myroute_panel_lyrclear(); // ルートを非表示 if (itsmo.myroute.route != null) { itsmo.myroute.route.clearRoute(); } $(".config-buttons-wrap").hide(); itsmo.myroute.RoutePointRemainder('clear'); //印刷用のルートパラメータを削除 $('#route_param').text(''); break; case 'point':// 地点選択モード itsmo.myroute.map_vics_clear(); itsmo.myroute.myroute_panel_eventdel(); itsmo.myroute.myroute_panel_lyrclear(); //itsmo.lib.document_on('ajax_myroute_panel2'); break; case 'point_back':// 地点選択モード(地点そのまま) itsmo.myroute.map_vics_clear(); itsmo.myroute.myroute_panel_eventdel(); itsmo.myroute.myroute_panel_lyrclear(); itsmo.myroute.myroute_panel_list(); itsmo.myroute.ResultCarPanelHide() itsmo.myroute.ResultPanelHide(); // ルートを非表示 if (itsmo.myroute.route != null) { itsmo.myroute.route.clearRoute(); itsmo.myroute.myroute_panel_result_kouho_event('close'); } $(".config-buttons-wrap").hide(); itsmo.lib.document_on('route_content'); //印刷用のルートパラメータを削除 $('#route_param').text(''); break; /* case 'result_car':// 結果 車 //itsmo.lib.document_on('ajax_myroute_panel3'); //itsmo.lib.document_on('ajax_myroute_panel3_kouho_car'); break; case 'result_all':// 結果 電車一覧 //itsmo.lib.document_on('ajax_myroute_panelall'); break; */ } itsmo.vars.g_myroute_panel_change = mode; }; //ルートパネルの最大化、最小化 itsmo.myroute.onMapRoutePanelResize = function (event) { var cls = $(this).attr('class'); var id = event.data.id.split(','); if(cls == 'minimize'){ for(i=0; i乗り換えルートへの変更はスタート地点とゴール地点のみが設定されます。', 'myroute_reroute1',itsmo.myroute.myroute_panel_submit); } } else { if(itsmo.vars.g_myroute_mode == 'all') { itsmo.lib.map_alert('移動手段の変更', '乗り換えルートへの変更はスタート地点とゴール地点のみが設定されます。', 'myroute_reroute0'); } } } }; //-------------------------------------------------------------------------------------------------- // 詳細設定ウィンドウ //-------------------------------------------------------------------------------------------------- itsmo.myroute.myroute_cond_setvalue = function() { var now = new Date(); switch(itsmo.vars.g_myroute_mode) { case 'car': now.setMinutes( now.getMinutes()+30 ); var mm = now.getMonth() + 1; var dd = now.getDate(); var hh = now.getHours(); var mi = now.getMinutes(); if(itsmo.vars.g_myroute_configs.car['date'] != '0') { //var yy = Math.floor(itsmo.vars.g_myroute_configs.car['date'].substr(0,4)); mm = Math.floor(itsmo.vars.g_myroute_configs.car['date'].substr(4,2)); dd = Math.floor(itsmo.vars.g_myroute_configs.car['date'].substr(6,2)); hh = Math.floor(itsmo.vars.g_myroute_configs.car['time'].substr(0,2)); mi = Math.floor(itsmo.vars.g_myroute_configs.car['time'].substr(2,2)); } //itsmo.lib.document_setvalue('ajax_myroute_cond_tyy',yy); itsmo.lib.document_setvalue('ajax_myroute_cond_tmm',mm); itsmo.lib.document_setvalue('ajax_myroute_cond_tdd',dd); itsmo.lib.document_setvalue('ajax_myroute_cond_thh',hh); itsmo.lib.document_setvalue('ajax_myroute_cond_tmi',Math.floor(mi / 15) * 15); // 15分単位 itsmo.lib.document_setvalue('ajax_myroute_cond_top',itsmo.vars.g_myroute_configs.car['top']); itsmo.lib.document_setvalue('ajax_myroute_cond_opt1',itsmo.vars.g_myroute_configs.car['opt1']); itsmo.lib.document_setvalue('ajax_myroute_cond_opt2',itsmo.vars.g_myroute_configs.car['opt2']); itsmo.lib.document_setvalue('ajax_myroute_cond_opt3',itsmo.vars.g_myroute_configs.car['ton']); itsmo.lib.document_setvalue('ajax_myroute_cond_opt4',itsmo.vars.g_myroute_configs.car['smart']); // itsmo.lib.map_windowopen('ajax_myroute_cond_car'); // $('#ajax_myroute_cond_car .komado-box-w').scrollTop(0); break; case 'all': now.setMinutes( now.getMinutes() ); var mm = now.getMonth() + 1; var dd = now.getDate(); var hh = now.getHours(); var mi = now.getMinutes(); if(itsmo.vars.g_myroute_configs.all['date']) { //var yy = Math.floor(itsmo.vars.g_myroute_configs.all['date'].substr(0,4)); mm = Math.floor(itsmo.vars.g_myroute_configs.all['date'].substr(4,2)); dd = Math.floor(itsmo.vars.g_myroute_configs.all['date'].substr(6,2)); hh = Math.floor(itsmo.vars.g_myroute_configs.all['time'].substr(0,2)); mi = Math.floor(itsmo.vars.g_myroute_configs.all['time'].substr(2,2)); } //itsmo.lib.document_setvalue('ajax_myroute_cond2_tyy',yy); itsmo.lib.document_setvalue('ajax_myroute_cond2_tmm',mm); itsmo.lib.document_setvalue('ajax_myroute_cond2_tdd',dd); itsmo.lib.document_setvalue('ajax_myroute_cond2_thh',hh); itsmo.lib.document_setvalue('ajax_myroute_cond2_tmi',mi); itsmo.lib.document_setvalue('ajax_myroute_cond2_top',itsmo.vars.g_myroute_configs.all['top']); itsmo.lib.document_setvalue('ajax_myroute_cond2_pri',itsmo.vars.g_myroute_configs.all['sort']); itsmo.lib.document_setvalue('ajax_myroute_cond2_exp',itsmo.vars.g_myroute_configs.all['exp']); itsmo.lib.document_setvalue('ajax_myroute_cond2_psc',itsmo.vars.g_myroute_configs.all['psc']); // itsmo.lib.map_windowopen('ajax_myroute_cond_all'); // $('#ajax_myroute_cond_all .komado-box-w').scrollTop(0); break; } }; // キャンセル itsmo.myroute.myroute_cond_cancel = function() { itsmo.myroute.myroute_cond_setvalue(); $(".config-buttons-wrap").hide(); }; // 決定 itsmo.myroute.reSearch = function () { itsmo.myroute.myroute_panel_submit(); $(".config-buttons-wrap").hide(); } itsmo.myroute.myroute_cond_submit = function() { var now = new Date(); // ルートを非表示 if (itsmo.myroute.route != null) itsmo.myroute.route.clearRoute(); switch(itsmo.vars.g_myroute_mode) { case 'car': itsmo.vars.g_myroute_configs.car['ton'] = 1;//渋滞予測 if(itsmo.lib.document_getvalue('ajax_myroute_cond_tsel') == 1) { //var tmp1 = itsmo.lib.document_getvalue('ajax_myroute_cond_tmm')+itsmo.lib.document_getvalue('ajax_myroute_cond_tdd') + itsmo.lib.document_getvalue('ajax_myroute_cond_thh')+itsmo.lib.document_getvalue('ajax_myroute_cond_tmi'); var mm = itsmo.lib.document_getvalue('ajax_myroute_cond_tmm'); var dd = itsmo.lib.document_getvalue('ajax_myroute_cond_tdd'); var hh = itsmo.lib.document_getvalue('ajax_myroute_cond_thh'); var mi = itsmo.lib.document_getvalue('ajax_myroute_cond_tmi'); //入力された時間が過去の場合は未来にする var now = new Date(); var yy = now.getFullYear(); var now_mm = now.getMonth()+1; if(now_mm > mm){ yy = now.getFullYear() + 1; }else if(now_mm == mm){ if(now.getDate() > dd){ yy = now.getFullYear() + 1; }else if(now.getDate() == dd){ if(now.getHours() > hh){ yy = now.getFullYear() + 1; } } } itsmo.vars.g_myroute_configs.car['date'] = yy + mm + dd;//日付 itsmo.vars.g_myroute_configs.car['time'] = hh + mi;//時刻 itsmo.vars.g_myroute_configs.car['top'] = itsmo.lib.document_getvalue('ajax_myroute_cond_top');//出発・到着 //渋滞予測 if (itsmo.lib.document_getvalue('ajax_myroute_cond_opt3') == 1) { itsmo.vars.g_myroute_configs.car['ton'] = 1; } else { itsmo.vars.g_myroute_configs.car['ton'] = 0; } //スマートIC if (itsmo.lib.document_getvalue('ajax_myroute_cond_opt4') == 1) { itsmo.vars.g_myroute_configs.car['smart'] = 1; } else { itsmo.vars.g_myroute_configs.car['smart'] = 0; } } itsmo.vars.g_myroute_configs.car['opt1'] = itsmo.lib.document_getvalue('ajax_myroute_cond_opt1');//ルート設定 itsmo.vars.g_myroute_configs.car['opt2'] = itsmo.lib.document_getvalue('ajax_myroute_cond_opt2');//車両 break; case 'all': //var tmp1 = itsmo.lib.document_getvalue('ajax_myroute_cond2_tmm')+itsmo.lib.document_getvalue('ajax_myroute_cond2_tdd') + itsmo.lib.document_getvalue('ajax_myroute_cond2_thh')+itsmo.lib.document_getvalue('ajax_myroute_cond2_tmi'); var mm = itsmo.lib.document_getvalue('ajax_myroute_cond2_tmm'); var dd = itsmo.lib.document_getvalue('ajax_myroute_cond2_tdd'); var hh = itsmo.lib.document_getvalue('ajax_myroute_cond2_thh'); var mi = itsmo.lib.document_getvalue('ajax_myroute_cond2_tmi'); //入力された時間が過去の場合は未来にする var now = new Date(); var yy = now.getFullYear(); var now_mm = now.getMonth()+1; if(now_mm > mm){ yy = now.getFullYear() + 1; }else if(now_mm == mm){ if(now.getDate() > dd){ yy = now.getFullYear() + 1; }else if(now.getDate() == dd){ if(now.getHours() > hh){ yy = now.getFullYear() + 1; } } } itsmo.vars.g_myroute_configs.all['date'] = yy + mm + dd; // 日付 itsmo.vars.g_myroute_configs.all['time'] = hh + mi; // 時間 if (!(itsmo.validate.check({id:'ajax_myroute_cond2', name:'日付', option:['date'], val:itsmo.vars.g_myroute_configs.all['date']}))) { return false; } itsmo.vars.g_myroute_configs.all['top'] = itsmo.lib.document_getvalue('ajax_myroute_cond2_top');//出発・到着・終電・始発 itsmo.vars.g_myroute_configs.all['sort'] = itsmo.lib.document_getvalue('ajax_myroute_cond2_pri');//表示順 //特急利用 if (itsmo.lib.document_getvalue('ajax_myroute_cond2_exp') == 1) { itsmo.vars.g_myroute_configs.all['exp'] = 1; } else { itsmo.vars.g_myroute_configs.all['exp'] = 0; } itsmo.vars.g_myroute_configs.all['psc'] = itsmo.lib.document_getvalue('ajax_myroute_cond2_psc');//徒歩条件 break; } // ルート探索を行う // itsmo.lib.map_windowclose(); }; //-------------------------------------------------------------------------------------------------- // 地図イベント //-------------------------------------------------------------------------------------------------- itsmo.vars.g_myroute_event = [];// イベント保持 itsmo.vars.g_myroute_eventx = -1; itsmo.vars.g_myroute_eventFlg = false; itsmo.myroute.isSettingFlg = false; itsmo.vars.g_myroute_last_click = 0; itsmo.vars.g_myroute_last_click_delay = 300; itsmo.myroute.canClick = function() { var now = (new Date()).getTime(); var n = now - itsmo.vars.g_myroute_last_click; itsmo.vars.g_myroute_last_click = now; return n >= itsmo.vars.g_myroute_last_click_delay; }; itsmo.vars.g_myroute_eventcur = null; // 保存 itsmo.myroute.myroute_panel_eventadd = function() { itsmo.myroute.myroute_panel_eventdel(); itsmo.myroute.isSettingFlg = true; // 旗移動 itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_MOUSEMOVE, function() { if(itsmo.vars.g_myroute_sellast != null) { itsmo.vars.g_myroute_shapeline2.changePoint(1, itsmo.vars.g_map_obj.getPointerPosition()); itsmo.vars.g_myroute_shapeline2.redraw(); } // カーソル旗の設定 if(itsmo.vars.g_myroute_selmode == 0) { // スタート itsmo.vars.g_myroute_eventcur = 'url(/design/cur/0.cur),pointer'; } else if (itsmo.vars.g_myroute_selmode == 2) { // ゴール itsmo.vars.g_myroute_eventcur = 'url(/design/cur/6.cur),pointer'; } itsmo.map.setMouseCursor('css', itsmo.vars.g_myroute_eventcur); // 旗決定(ドラッグ) if (itsmo.vars.g_myroute_eventx >= 0 && itsmo.vars.g_myroute_eventx < 99) { itsmo.vars.g_myroute_eventx ++; } })); /* // 旗決定(マウスダウン) itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_DRAG_START, function() { // クリック時の状態記憶 itsmo.vars.g_myroute_eventx = itsmo.vars.g_map_obj.MouseClickX; itsmo.vars.g_myroute_eventy = itsmo.vars.g_map_obj.MouseClickY; })); // 旗決定(マウスアップ) itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_CLICK, function() { if(Math.abs(itsmo.vars.g_myroute_eventx - itsmo.vars.g_map_obj.MouseClickX) < 5 && Math.abs(itsmo.vars.g_myroute_eventy - itsmo.vars.g_map_obj.MouseClickY) < 5) { itsmo.myroute.myroute_panel_addmap(); } })); */ // 旗決定(マウスダウン) itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_DRAG_START, function() { // クリック時の状態記憶 itsmo.vars.g_myroute_eventx = 0; })); // 旗決定(マウスアップ) itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_CLICK, function() { if (itsmo.myroute.canClick()) { itsmo.myroute.myroute_panel_addmap(); } itsmo.vars.g_myroute_eventx = -1; itsmo.vars.g_myroute_eventFlg = false; })); itsmo.vars.g_myroute_event.push(ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_DRAG_END, function() { if(itsmo.vars.g_myroute_eventx >= 0 && itsmo.vars.g_myroute_eventx < 5 && itsmo.vars.g_myroute_eventFlg == false) { if (itsmo.myroute.canClick()) { itsmo.myroute.myroute_panel_addmap(); } } itsmo.vars.g_myroute_eventx = -1; itsmo.vars.g_myroute_eventFlg = false; })); }; // 削除 itsmo.myroute.myroute_panel_eventdel = function() { itsmo.myroute.isSettingFlg = false; $.each(itsmo.vars.g_myroute_event, function(i, v) { ZDC.removeListener(v); }); itsmo.vars.g_myroute_event = []; }; //-------------------------------------------------------------------------------------------------- // 地点追加 //-------------------------------------------------------------------------------------------------- itsmo.vars.g_myroute_panel_addr = null; itsmo.vars.g_myroute_panel_addropt = null; //地図から追加 ----------------------------------- itsmo.myroute.myroute_panel_setmode = function(mode) { if(mode == 0) { itsmo.lib.document_class('ajax_route-f-start','route-f-start-act'); itsmo.lib.document_class('ajax_route-f-goal','route-f-goal'); } else { itsmo.lib.document_class('ajax_route-f-start','route-f-start'); itsmo.lib.document_class('ajax_route-f-goal','route-f-goal-act'); } itsmo.vars.g_myroute_selmode = mode; itsmo.myroute.myroute_panel_list(); }; itsmo.myroute.myroute_panel_addmap = function(point) { var name = '読み込み中...'; if (!point) var point = itsmo.lib.toMilliSec(itsmo.vars.g_map_obj.getPointerPosition()); if(itsmo.vars.g_myroute_selmode == 0) { // スタート itsmo.myroute.myroute_panel_addstart(name,point); } else if (itsmo.vars.g_myroute_selmode == 2) { // ゴール itsmo.myroute.myroute_panel_addgoal(name,point); } else { // 経由 itsmo.myroute.myroute_panel_addstop(name,point,itsmo.vars.g_myroute_stop_num - 2); } //あと○地点まで itsmo.myroute.RoutePointRemainder('add'); itsmo.sub.map_getaddr(point, function(result) { if(result.status == 0) { title = result.items[0].address; view_title = title; if(title.length > 13) { view_title = title.substr(0,14) + "..."; } } else { title = '住所無し'; view_title = '住所無し'; } $.each(itsmo.vars.g_myroute_stops, function(i, v) { if (null != v && v.lat == point.lat && v.lon == point.lon) { v.title = title; itsmo.lib.document_setvalue('ajax_myroute_panellt' + i, itsmo.lib.htmlspecialchars(view_title)); } }); }); }; // スタート地点 ---------------------------------- itsmo.myroute.myroute_panel_addstart = function(title,point,id) { if(itsmo.vars.g_myroute_mode == null) { itsmo.myroute.map_route_selectcond(function() { itsmo.myroute.myroute_panel_addstart(title, point); }); return; } if(itsmo.myroute.myroute_panel_addchk(title,point) == false) return; // 地点選択を移動 var cnt = 0; for(var i = 0;i < itsmo.vars.g_myroute_stop_num;i ++) if(itsmo.vars.g_myroute_stops[i] != null) cnt ++; if(itsmo.vars.g_myroute_first) { itsmo.myroute.myroute_panel_setmode(2); itsmo.vars.g_myroute_first = 0; } // 地点を下にずらす if(itsmo.vars.g_myroute_stops[0] != null) { for(var i = itsmo.vars.g_myroute_stop_num-1;i > 0;i --) { if(itsmo.vars.g_myroute_stops[i-1] != null) { itsmo.vars.g_myroute_stops[i] = itsmo.vars.g_myroute_stops[i-1]; } } } itsmo.vars.g_myroute_stops[0] = point; itsmo.vars.g_myroute_stops[0].title = title; if(id) itsmo.vars.g_myroute_stops[0].id = id; else itsmo.vars.g_myroute_stops[0].id = ''; // 描画 itsmo.myroute.myroute_panel_list(); }; // ゴール地点 ------------------------------------ itsmo.myroute.myroute_panel_addgoal = function(title,point,id) { if(point == null) point = itsmo.vars.g_map_search_location; if(itsmo.vars.g_myroute_mode == null) { itsmo.myroute.map_route_selectcond( function(){ itsmo.myroute.myroute_panel_addgoal(title,point); }); return; } if(itsmo.myroute.myroute_panel_addchk(title,point) == false) return; // 地点選択を移動 var cnt = 0; for (var i = 0; i < itsmo.vars.g_myroute_stop_num; i++) { if (itsmo.vars.g_myroute_stops[i] != null) { cnt ++; } } if(itsmo.vars.g_myroute_first) { itsmo.myroute.myroute_panel_setmode(0); itsmo.vars.g_myroute_first = 0; } // 地点を上にずらす var j = 0; for(var i = 0;i < itsmo.vars.g_myroute_stop_num-1;i ++) { if(itsmo.vars.g_myroute_stops[i] != null) { j = i + 1; } } if(itsmo.vars.g_myroute_stops[0] == null && itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1] != null && j == itsmo.vars.g_myroute_stop_num-1) { // 経由地がいっぱいならスタートにずれ込ませる for(i = 0;i < itsmo.vars.g_myroute_stop_num-1;i ++) { itsmo.vars.g_myroute_stops[i] = itsmo.vars.g_myroute_stops[i+1]; } } itsmo.vars.g_myroute_stops[j] = itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1]; itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1] = point; itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1].title = title; if(id) itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1].id = id; else itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1].id = ''; // 描画 itsmo.myroute.myroute_panel_list(); }; // 経由地点 itsmo.myroute.myroute_panel_addstop = function(title,point,id) { if(itsmo.vars.g_myroute_mode == null) { itsmo.myroute.map_route_selectcond( function(){ itsmo.myroute.myroute_panel_addstop(title,point); }); return; } if(itsmo.myroute.myroute_panel_addchk(title,point) == false) return; // 経由地の地点数確認 var cnt = 0; for(var i = 1;i < itsmo.vars.g_myroute_stop_num-1;i ++) if(itsmo.vars.g_myroute_stops[i] != null) cnt ++; if(cnt == itsmo.vars.g_myroute_stop_num-2) { //経由地空き無し if(itsmo.vars.g_myroute_stops[0] == null) { // スタートが空 for(i = 0;i < itsmo.vars.g_myroute_stop_num-2;i ++) itsmo.vars.g_myroute_stops[i] = itsmo.vars.g_myroute_stops[i+1] delete itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-2]; } if(itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1] == null) { // ゴールが空 for(i = itsmo.vars.g_myroute_stop_num-1;i > 1;i --) itsmo.vars.g_myroute_stops[i] = itsmo.vars.g_myroute_stops[i-1] delete itsmo.vars.g_myroute_stops[1]; } } // 挿入 for(i = 1;i < itsmo.vars.g_myroute_stop_num-1;i ++) {//経由 if(itsmo.vars.g_myroute_stops[i] == null) { itsmo.vars.g_myroute_stops[i] = point; itsmo.vars.g_myroute_stops[i].title = title; if(id) itsmo.vars.g_myroute_stops[i].id = id; else itsmo.vars.g_myroute_stops[i].id = ''; break; } } // 描画 itsmo.myroute.myroute_panel_list(); }; // 保存可否チェック itsmo.myroute.myroute_panel_addchk = function(title,point) { if(itsmo.vars.g_myroute_panel_change == 'result_car' || itsmo.vars.g_myroute_panel_change == 'result_all') { alert('ルートをクリアして下さい'); return false; } // 件数 var cnt = 0; for(var i = 0;i < itsmo.vars.g_myroute_stop_num;i ++) if(itsmo.vars.g_myroute_stops[i] != null) cnt ++; if(cnt == itsmo.vars.g_myroute_stop_num) { alert('これ以上保存できません'); return false; } // タイトル if(title == '') { alert('タイトルがありません'); return false; } return true; }; //-------------------------------------------------------------------------------------------------- // 地点削除 //-------------------------------------------------------------------------------------------------- itsmo.myroute.myroute_panel_del = function(no) { // 削除 delete itsmo.vars.g_myroute_stops[no]; itsmo.myroute.RoutePointRemainder('del'); if(no == 0) { // スタート itsmo.myroute.myroute_panel_setmode(0); } else if(no == itsmo.vars.g_myroute_stop_num-1) { // スタート itsmo.myroute.myroute_panel_setmode(2); } else if(no > 0 && no < itsmo.vars.g_myroute_stop_num-1) { // 経由地 for(var i = 1;i < itsmo.vars.g_myroute_stop_num-2;i ++) { if(itsmo.vars.g_myroute_stops[i] == null && itsmo.vars.g_myroute_stops[i+1] != null) { itsmo.vars.g_myroute_stops[i] = itsmo.vars.g_myroute_stops[i+1]; delete itsmo.vars.g_myroute_stops[i+1]; } } } // 全部消した時の挙動 var cnt = 0; for(var i = 0;i < itsmo.vars.g_myroute_stop_num;i ++) if(itsmo.vars.g_myroute_stops[i] != null) cnt ++; if(cnt == 0) { itsmo.vars.g_myroute_first = 1; itsmo.myroute.myroute_panel_setmode(0); } itsmo.myroute.myroute_panel_list(); }; // 全削除 itsmo.myroute.myroute_panel_delall = function() { for(var i = 0;i < 10;i ++) { if(itsmo.vars.g_myroute_stops[i]) delete itsmo.vars.g_myroute_stops[i]; itsmo.lib.document_off('ajax_myroute_panell'+i); } itsmo.vars.g_myroute_first = 1; itsmo.myroute.myroute_panel_setmode(0); itsmo.vars.g_myroute_stops = []; // 詳細設定パネルを初期化。 itsmo.myroute.myroute_panel_clear(); // パネルリスト描画 itsmo.myroute.myroute_panel_list(); }; //-------------------------------------------------------------------------------------------------- // リスト描画 //-------------------------------------------------------------------------------------------------- itsmo.myroute.myroute_panel_list = function(redraw) { itsmo.myroute.myroute_panel_change('point'); // 色々クリア itsmo.myroute.myroute_flagclear(); itsmo.myroute.myroute_panel_eventdel(); itsmo.map.setMouseCursor('hand'); itsmo.myroute.map_route_selectcond_close(); // カーソル選択 ------------------------------ var cnt = 0, min = 999, max = -1; for(var i = 0;i < itsmo.vars.g_myroute_stop_num; i++) { if(itsmo.vars.g_myroute_stops[i] != null) { min = Math.min(min, i); max = Math.max(max, i); cnt++; } } // ルート条件指定の表示 if(cnt >= 2) { itsmo.lib.document_on('ajax_myroute_panel2submit'); } else { itsmo.lib.document_off('ajax_myroute_panel2submit'); } // 線と旗の設定 if(itsmo.vars.g_myroute_selmode == 0) { // スタート itsmo.vars.g_myroute_sellast = min >= 999 ? null : min; } else if (itsmo.vars.g_myroute_selmode == 2) { // ゴール itsmo.vars.g_myroute_sellast = max < 0 ? null : max; } if(itsmo.vars.g_myroute_sellast != null) { if(cnt != itsmo.vars.g_myroute_stop_num || redraw == 1) { // 線の描画 itsmo.vars.g_myroute_shapeline2.removeAllPoints(); itsmo.vars.g_myroute_shapeline2.addPoint( itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_sellast]) ); itsmo.vars.g_myroute_shapeline2.addPoint( null == itsmo.vars.g_map_obj.getPointerPosition() ? itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_sellast]) : itsmo.vars.g_map_obj.getPointerPosition() ); itsmo.vars.g_myroute_shapeline2.visible(); itsmo.vars.g_myroute_shapeline2.redraw(); } if(redraw != 1) { itsmo.myroute.myroute_tip(itsmo.vars.g_myroute_sellast); } } if(itsmo.vars.g_myroute_mode != null && cnt != itsmo.vars.g_myroute_stop_num) { itsmo.myroute.myroute_panel_eventadd(); } // 地点描画 ---------------------------------- itsmo.vars.g_myroute_shapeline1.removeAllPoints(); for(var i = 0;i < itsmo.vars.g_myroute_stop_num;i ++) { while (itsmo.vars.g_myroute_flagid.length <= i) { itsmo.vars.g_myroute_flagid.push(null); } itsmo.vars.g_myroute_flagid[i] = null; if(itsmo.vars.g_myroute_stops[i] != null) { var title = decodeURIComponent(itsmo.vars.g_myroute_stops[i].title); if(title.length > 13) title = title.substr(0,14) + "..."; itsmo.lib.document_on('ajax_myroute_panell'+i); itsmo.lib.document_setvalue('ajax_myroute_panellt'+i,itsmo.lib.htmlspecialchars(title)); $('#ajax_myroute_panella'+i).attr('href','javascript:if(!itsmo.vars.g_myroute_moved) itsmo.vars.g_map_obj.moveLatLon(itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops['+i+']))'); // 旗 var img = 'route-f-'+i; if(i == 0) { img = 'route-f-start'; } if(i == itsmo.vars.g_myroute_stop_num - 1) { img = 'route-f-goal'; } //var html = ''; var html = ''; var tip = new ZDC.UserWidget(itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[i]), { html: html, size: itsmo.sub.getHtmlSize(html), offset: new ZDC.Pixel(-3, -40) }); tip.setZindex(itsmo.map.d_map_zIdx_route); var id = itsmo.vars.g_map_layer_clickable.add(tip); itsmo.vars.g_map_layer_clickable.showById(id); itsmo.vars.g_myroute_flagid[i] = id; // 線 if(cnt > 1) itsmo.vars.g_myroute_shapeline1.addPoint( itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[i].lat,itsmo.vars.g_myroute_stops[i].lon) ); } else { itsmo.lib.document_off('ajax_myroute_panell'+i); } } if(cnt > 1) { itsmo.vars.g_myroute_shapeline1.visible(); itsmo.vars.g_myroute_shapeline1.redraw(); } }; //-------------------------------------------------------------------------------------------------- // ツールチップ //-------------------------------------------------------------------------------------------------- itsmo.vars.g_myroute_tooltimerid = null; itsmo.myroute.myroute_tip = function(no) { // html var mode = 0; if (itsmo.vars.g_myroute_stops[0] != null && itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_stop_num-1] != null) { mode = 1; } $('#ajax_myroute_paneltip'+mode+' #ajax_myroute_paneltip'+mode+'a').attr('href','javascript:itsmo.myroute.myroute_panel_del('+no+')'); var html = $('#ajax_myroute_paneltip'+mode).html(); // 初期化 if(itsmo.vars.g_myroute_tool == null) { itsmo.vars.g_myroute_tool= new ZDC.UserWidget(itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[no]), { html: html, // size: new ZDC.WH(100, 80), offset: new ZDC.Pixel(35, -15) }); itsmo.vars.g_map_obj.addWidget(itsmo.vars.g_myroute_tool); itsmo.vars.g_myroute_tool.setZindex(itsmo.map.d_map_zIdx_routetip); } else { itsmo.vars.g_myroute_tool.moveLatLon(itsmo.lib.toLatLon(itsmo.vars.g_myroute_stops[no])); itsmo.vars.g_myroute_tool.setHtml(html/*, new ZDC.WH(100, 80)*/); } itsmo.vars.g_myroute_tool.open(); // 一定時間後に消す if(itsmo.vars.g_myroute_tooltimerid != null) { clearTimeout(itsmo.vars.g_myroute_tooltimerid); } itsmo.vars.g_myroute_tooltimerid = setTimeout("itsmo.vars.g_myroute_tooltimerid=null;itsmo.vars.g_myroute_tool.close();" , 5000); }; //-------------------------------------------------------------------------------------------------- // レイヤー制御 //-------------------------------------------------------------------------------------------------- itsmo.myroute.myroute_flagclear = function() { // 旗を消す for(var i = 0;i < itsmo.vars.g_myroute_flagid.length;i ++) { if(itsmo.vars.g_myroute_flagid[i] != null) { itsmo.vars.g_map_layer_clickable.removeById(itsmo.vars.g_myroute_flagid[i]); itsmo.vars.g_myroute_flagid[i] = null; } if(itsmo.vars.g_myroute_flag2id[i] != null) { itsmo.vars.g_map_layer_route.removeById(itsmo.vars.g_myroute_flag2id[i]); itsmo.vars.g_myroute_flag2id[i] = null; } } // ツールチップを消す if(itsmo.vars.g_myroute_tool != null) { itsmo.vars.g_myroute_tool.close(); } // 線を消す itsmo.vars.g_myroute_shapeline1.hidden(); itsmo.vars.g_myroute_shapeline2.hidden(); itsmo.vars.g_myroute_shapeline1.removeAllPoints(); itsmo.vars.g_myroute_shapeline2.removeAllPoints(); }; //-------------------------------------------------------------------------------------------------- // 地点ドラッグ処理 //-------------------------------------------------------------------------------------------------- itsmo.vars.g_myroute_panelm = null; itsmo.vars.g_myroute_drag = null; itsmo.vars.g_myroute_mdx = null; itsmo.vars.g_myroute_mdy = null; itsmo.vars.g_myroute_moved = null; // MouseDown itsmo.myroute.myroute_panelmd = function(event,no) { itsmo.vars.g_myroute_drag = no; itsmo.vars.g_myroute_moved = 0; // 移動するdivを取得 itsmo.vars.g_myroute_panelm = document.getElementById('ajax_myroute_panell'+no); itsmo.vars.g_myroute_panelm.style.zIndex = 9999; itsmo.vars.g_myroute_mdx = event.screenX; itsmo.vars.g_myroute_mdy = event.screenY; // IEのみ選択範囲指定イベントを制御 if(document.attachEvent) { document.body.detachEvent("onselectstart",itsmo.myroute.myroute_panelonselect); document.body.attachEvent("onselectstart",itsmo.myroute.myroute_panelonselect); } }; // MouseUp itsmo.myroute.myroute_panelmu = function(event) { if(itsmo.vars.g_myroute_panelm == null) return; var offsetTop = document.getElementById('ajax_myroute_panell'+itsmo.vars.g_myroute_drag).offsetTop; // 元の位置に戻す itsmo.vars.g_myroute_panelm.style.left = "0px"; itsmo.vars.g_myroute_panelm.style.top = "0px"; itsmo.vars.g_myroute_panelm.style.zIndex = 0; itsmo.vars.g_myroute_panelm = null; // IEのみ選択範囲指定イベントを有効 if(document.attachEvent) document.body.detachEvent("onselectstart",itsmo.myroute.myroute_panelonselect); // 移動先を計算 if(itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_drag] == null) return; var drop = 0; for(var i = 0;i < itsmo.vars.g_myroute_stop_num; i ++) { if(itsmo.vars.g_myroute_stops[i] != null) { if(document.getElementById('ajax_myroute_panell'+i).offsetTop < offsetTop) { drop = i+1; } } } if(itsmo.vars.g_myroute_drag != drop - 1) { var tmp = [],j=0; // 並び替える for(i = 0;i < itsmo.vars.g_myroute_stop_num+1; i ++) { if(i == drop) { tmp[j] = itsmo.vars.g_myroute_stops[itsmo.vars.g_myroute_drag]; j ++; } if(itsmo.vars.g_myroute_stops[i] != null && i != itsmo.vars.g_myroute_drag) { tmp[j] = itsmo.vars.g_myroute_stops[i]; j ++; } } // 入れ替える j = 0; for(i = 0;i < itsmo.vars.g_myroute_stop_num; i ++) { if(itsmo.vars.g_myroute_stops[i] != null) { itsmo.vars.g_myroute_stops[i] = tmp[j]; j ++; } } } itsmo.myroute.myroute_panel_list(); }; // MouseMove itsmo.myroute.myroute_panelmv = function(event) { if(itsmo.vars.g_myroute_panelm == null) return; itsmo.vars.g_myroute_moved = 1; // divの移動 //itsmo.vars.g_myroute_panelm.style.left = (event.screenX - itsmo.vars.g_myroute_mdx)+'px'; itsmo.vars.g_myroute_panelm.style.top = (event.screenY - itsmo.vars.g_myroute_mdy)+'px'; }; // イベント用関数 itsmo.myroute.myroute_panelonselect = function() { return false; }; //------------------------------------------------ // ルート探索種別選択 //------------------------------------------------ itsmo.vars.g_map_route_selectcond_func = null; // 開く itsmo.myroute.map_route_selectcond = function(func) { itsmo.lib.map_windowclose(); var obj = document.getElementById('ajax_map_routeselect'); obj.style.top = (itsmo.vars.g_map_mouse_y - 35) + 'px'; obj.style.left = (itsmo.vars.g_map_mouse_x - 110) + 'px'; itsmo.lib.document_on('ajax_map_routeselect'); itsmo.vars.g_map_route_selectcond_func = func; }; // 決定 itsmo.myroute.map_route_selectcond_submit = function(type) { switch(type) { case 'car': itsmo.myroute.myroute_car(); break; case 'all': itsmo.myroute.myroute_all(); break; } itsmo.myroute.map_route_selectcond_close(); itsmo.vars.g_map_route_selectcond_func(); }; // 閉じる itsmo.myroute.map_route_selectcond_close = function() { itsmo.lib.document_off('ajax_map_routeselect'); }; //------------------------------------------------ // パネルの開け閉めなど //------------------------------------------------ // ルート検索パネル を隠す itsmo.myroute.ContentPanelHide = function () { $('#route_content').css('z-index','0').hide(); }; // ルート検索結果(車)パネル を隠す itsmo.myroute.ResultCarPanelHide = function () { $('#route_result_car').css('z-index','0').hide(); }; // ルート検索結果(電車・徒歩)パネル を隠す itsmo.myroute.ResultPanelHide = function () { $('#route_result').css('z-index','0').hide(); }; /* 追加できる地点数カウント&表示(あと○地点まで) @param string type タイプ(add:カウント&パネル表示 change:切替 clear:初期化) for public use */ itsmo.myroute.RoutePointRemainder = function (type) { if(type == 'add'){ itsmo.vars.g_myroute_cnt ++ ; var route_point_cnt = itsmo.vars.g_myroute_stop_num - itsmo.vars.g_myroute_cnt; if(route_point_cnt >= 0){ $('#route_point-cnt span').text(route_point_cnt); } }else if (type == 'change') { if(itsmo.vars.g_myroute_cnt >= itsmo.vars.g_myroute_stop_num){ itsmo.vars.g_myroute_cnt = itsmo.vars.g_myroute_stop_num; $('#route_point-cnt span').text(0); }else{ var route_point_cnt = itsmo.vars.g_myroute_stop_num - itsmo.vars.g_myroute_cnt; $('#route_point-cnt span').text(route_point_cnt); } }else if(type == 'clear'){ itsmo.vars.g_myroute_cnt = 0; $('#route_point-cnt span').text(0); }else if(type == 'del'){ itsmo.vars.g_myroute_cnt -- ; var route_point_cnt = itsmo.vars.g_myroute_stop_num - itsmo.vars.g_myroute_cnt; $('#route_point-cnt span').text(route_point_cnt); } if(itsmo.vars.g_myroute_cnt == 0){ $("#route_menu #start-description").show(); $("#route_menu #remaining-description").hide(); $("#route_menu #full-description").hide(); } else if((itsmo.vars.g_myroute_cnt > 0 && itsmo.vars.g_myroute_cnt < 5 && itsmo.vars.g_myroute_mode == 'car') ||(itsmo.vars.g_myroute_cnt > 0 && itsmo.vars.g_myroute_cnt < 2 && itsmo.vars.g_myroute_mode == 'all')){ $("#route_menu #start-description").hide(); $("#route_menu #remaining-description").show(); $("#route_menu #full-description").hide(); } else if((itsmo.vars.g_myroute_cnt == 5 && itsmo.vars.g_myroute_mode == 'car') || (itsmo.vars.g_myroute_cnt == 2 && itsmo.vars.g_myroute_mode == 'all')){ $("#route_menu #start-description").hide(); $("#route_menu #remaining-description").hide(); $("#route_menu #full-description").show(); } }; itsmo.myroute.myroute_cond_more_car = function(){ if ($('#type_cond_car').css('display') == 'none'){ $('#type_cond_car').show(); itsmo.lib.document_setvalue('show_cond_btn_car','条件設定を閉じる'); }else{ $('#type_cond_car').hide(); itsmo.lib.document_setvalue('show_cond_btn_car','条件設定を開く'); } } itsmo.myroute.myroute_cond_more_train = function(){ if ($('#type_cond_train').css('display') == 'none'){ $('#type_cond_train').show(); itsmo.lib.document_setvalue('show_cond_btn_train','条件設定を閉じる'); }else{ $('#type_cond_train').hide(); itsmo.lib.document_setvalue('show_cond_btn_train','条件設定を開く'); } } itsmo.myroute.clearAll = function (){ var mode = itsmo.vars.g_myroute_mode; itsmo.vars.g_myroute_panel_isvisible = 1; itsmo.myroute.showRoutePanel(); if(mode == 'car'){ itsmo.myroute.myroute_car(); } else if(mode == 'all') { itsmo.myroute.myroute_all(); } }