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();
}
}