//-------------------------------------------------------------------------------------------------- // 地図設定関数 // // 開発履歴 // 2009/09/28 tsano 新規開発 // 2009/12/16 tsano 2nd 用に改修 //-------------------------------------------------------------------------------------------------- if (typeof itsmo == 'undefined') { var itsmo = {}; } if (typeof itsmo.vars == 'undefined') { itsmo.vars = {}; } itsmo.config = {}; itsmo.config.MapEasyConfig = function() { this.loadConfig(); // ドラッグ時動作用のイベント登録。 /* ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_MOUSEDOWN, itsmo.config.configDragStart); ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_MOUSEUP, itsmo.config.configDragEnd); ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_MOUSEMOVE, itsmo.config.configDragMove); */ ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_RIGHTCLICK, itsmo.vars.g_config_dblclick_right); ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_SCROLL_END, itsmo.vars.dblclickZoomInScrollMapEnd); // jQueryUI でウィンドウのドラッグ移動を実験。 //$('#ajax_config_window').draggable(); }; itsmo.config.MapEasyConfig.prototype.getCookie = function(key, defaultVal) { var s = itsmo.lib.cookie_get(key); if ('' == s) { return defaultVal; } return s; }; //初期処理 itsmo.config.MapEasyConfig.prototype.init = function () { /* //オーバーライド(itsmo.vars.g_config.mapinfoを見るようにした) itsmo.vars.g_map_layer_clickable.visibleZdcTooltipById=function(id){ if(this.tooltips[id]){ this.tooltips[id].doc.style.width=this.tooltips[id].firstwidth; this.tooltips[id].doc.style.height=this.tooltips[id].firstheight; this.tooltips[id].doc.style.display="block"; } }; */ this.loadConfig(); this.setToMap(); this.setToWindow(); }; // Cookie から設定値を取得。 itsmo.config.MapEasyConfig.prototype.loadConfig = function() { var s = this.getCookie('config_wheeltype', '1'); this.wheeltype = parseInt(s); s = this.getCookie('config_dblclick', '0'); this.dblclick = parseInt(s); //s = this.getCookie('config_mappanel', '1'); s = '1'; this.mappanel = parseInt(s); // s = this.getCookie('config_recommend', '1'); // this.maprecommend = parseInt(s); s = this.getCookie('config_centerfirst', '1'); this.centerfirst = parseInt(s); s = this.getCookie('config_mapinfo_minimize', '0'); this.mapinfo_minimize = parseInt(s); if(0 != this.mapinfo_minimize){ $('#config_mapinfo_minimize').val(1); $(".map_header1 #balloon-size #small-icon").removeClass('off'); $(".map_header1 #balloon-size #large-icon").addClass('off'); } else { $('#config_mapinfo_minimize').val(0); $(".map_header1 #balloon-size #small-icon").addClass('off'); $(".map_header1 #balloon-size #large-icon").removeClass('off'); } s = this.getCookie('config_speedmode', '1'); this.speedmode = parseInt(s); }; // Cookie へ設定値をセット。 itsmo.config.MapEasyConfig.prototype.saveConfig = function() { itsmo.lib.cookie_set('config_wheeltype', '' + this.wheeltype); //itsmo.lib.cookie_set('config_drag', '' + this.drag); itsmo.lib.cookie_set('config_centerfirst', '' + this.centerfirst); itsmo.lib.cookie_set('config_dblclick', '' + this.dblclick); itsmo.lib.cookie_set('config_mappanel', '' + this.mappanel); // itsmo.lib.cookie_set('config_recommend', '' + this.maprecommend); itsmo.lib.cookie_set('config_mapinfo_minimize', '' + this.mapinfo_minimize); //itsmo.lib.cookie_set('config_rightclickmenu', this.rightclickmenu); itsmo.lib.cookie_set('config_speedmode', '' + this.speedmode); }; // ホイール時の拡大縮小を逆転させる。 itsmo.config.MapEasyConfig.prototype.setWheelType = function(n) { n = parseInt(n); if (0 != n) { n = 1; } this.wheeltype = n; }; // ホイール動作の設定。 itsmo.config.MapEasyConfig.prototype.setWheelTypeToMap = function() { // 画面変更。 $('#userzoomcontrol').unwrap(); itsmo.vars.g_map_obj.setWheelType(this.wheeltype == 0 ? 1 : 2); itsmo.vars.g_map_obj.removeUserZoomControl(); if (0 == this.wheeltype) { $('#userzoomcontrol').wrap('
'); } else { $('#userzoomcontrol').wrap('
'); } }; // ホイール時の拡大中心部の動作変更。 itsmo.config.MapEasyConfig.prototype.setCenterFirst = function(n) { n = parseInt(n); if (0 != n) { n = 1; } this.centerfirst = n; }; itsmo.vars.g_config_dblclick_zoomin = function() { // ダブルクリックで拡大。 itsmo.vars.g_map_obj.moveLatLon(itsmo.vars.g_map_obj.getClickLatLon()); itsmo.vars.g_map_obj.zoomIn(); }; itsmo.vars.g_config_dblclick_right_count = 0; // 右クリック回数 itsmo.vars.g_config_dblclick_right_timer = null; // 右ダブルクリック判定用タイムアウト。 itsmo.vars.g_config_dblclick_right_data = {}; itsmo.vars.g_config_dblclick_right = function() { // 右クリックされた。 ++itsmo.vars.g_config_dblclick_right_count; if (null == itsmo.vars.g_config_dblclick_right_timer) { itsmo.vars.g_config_dblclick_right_timer = setTimeout(itsmo.vars.g_config_dblclick_right_timerfunc, 300); } }; // 右ダブルクリック判定用のタイムアウト関数。 itsmo.vars.g_config_dblclick_right_timerfunc = function() { itsmo.vars.g_config_dblclick_right_timer = null; var n = itsmo.vars.g_config_dblclick_right_count; itsmo.vars.g_config_dblclick_right_count = 0; if (n <= 1 || !itsmo.vars.g_config.isDblClickNoMove()) { // 右シングルクリック。メニュー表示。 itsmo.vars.g_config.configShowRightClickMenu(); } else { // 右ダブルクリックで縮小。 if (itsmo.vars.g_config.dblclick != 0) { itsmo.vars.g_map_obj.moveLatLon(itsmo.vars.g_map_obj.getPointerPosition()); itsmo.vars.g_map_obj.zoomOut(); } } }; // ダブルクリック時の動作変更。 itsmo.config.MapEasyConfig.prototype.setDblClick = function(n) { n = parseInt(n); if (0 != n) { n = 1; } this.dblclick = n; }; // ダブルクリック時の動作をセットする。 itsmo.config.MapEasyConfig.prototype.setDblClickToMap = function() { ZDC.clearListeners(itsmo.vars.g_map_obj, ZDC.MAP_DBLCLICK); ZDC.clearListeners(itsmo.vars.g_map_obj, ZDC.MAP_CLICK); if (0 == this.dblclick) { // シングルクリックで移動。 ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_CLICK, itsmo.map.map_clickmap); } else { // ダブルクリックの左で拡大、右で縮小。 ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_DBLCLICK, itsmo.vars.g_config_dblclick_zoomin); //ZDC.addListener(itsmo.vars.g_map_obj, ZDC.MAP_CLICK, itsmo.map.map_clickmap); } if(itsmo.vars.premiumMap != null && typeof (itsmo.vars.premiumMap.reAddListener) == 'function'){ itsmo.vars.premiumMap.reAddListener(); } }; // ダブルクリック時拡大縮小モードか? itsmo.config.MapEasyConfig.prototype.isDblClickNoMove = function(n) { return 0 != this.dblclick; }; //地図の施設情報(ツールチップ)表示の動作設定 itsmo.config.MapEasyConfig.prototype.setMapInfoToMap = function () { itsmo.map.showMapTooltip(); }; // 地図の施設情報(ツールチップ)小さくする動作変更 itsmo.config.MapEasyConfig.prototype.setMapInfoMinimize = function(n) { n = parseInt(n); if (0 != n) { n = 1; } this.mapinfo_minimize = n; }; //地図の施設情報(ツールチップ)の大小を変更 itsmo.config.MapEasyConfig.prototype.setMapInfoMinimizeToMap = function () { var flg = this.mapinfo_minimize; /* if(flg == 0){ $('.f-supper0').attr('class','fukidasi0'); }else{ $('.fukidasi0').attr('class','f-supper0'); } */ itsmo.sub.set_tooltip_s.setHtmlAll(); }; //地図のお勧め情報表示の動作設定 //itsmo.config.MapEasyConfig.prototype.setMapRecommendToMap = function () { // // var flg = this.maprecommend; // if(flg == 0){ // $("div[id^='tip_c_osusume_']").hide(); // $("div[id^='tip_o_osusume_']").hide(); // //itsmo.map.hideMapTooltip(); // //}else{ // //itsmo.map.showMapTooltip(); // } //}; // 地図のお勧め情報表示の動作変更。(初回読込時吹き出し有無) //itsmo.config.MapEasyConfig.prototype.setMapRecommend = function(n) { // n = parseInt(n); // if (0 != n) { // n = 1; // } // this.maprecommend = n; // //}; // 地図のパネル表示の動作変更。 itsmo.config.MapEasyConfig.prototype.setMapPanel = function(n) { n = parseInt(n); if (0 != n) { n = 1; } this.mappanel = n; }; itsmo.config.MapEasyConfig.prototype.configShowRightClickMenu = function() { //var html = $('#right_click_div).html(); itsmo.map.closeUserMsgWindow(); //住所取得 prm = itsmo.vars.g_map_obj.getPointerPosition(); if(itsmo.config._request != null) { itsmo.lib.XMLHttpRequest2_abort(itsmo.config._request); } itsmo.config._request = itsmo.lib.XMLHttpRequest2_send('/map/right_click.php', function (result) { if(result.err){return false;} var addr = result[0].address.text; var zip = result[0].zipcode; var point = itsmo.lib.toMilliSec(itsmo.vars.g_map_obj.getPointerPosition()); var lat = itsmo.vars.g_config_dblclick_right_data['lat'] = point.lat; var lon = itsmo.vars.g_config_dblclick_right_data['lon'] = point.lon; itsmo.vars.g_config_dblclick_right_data['addr'] = addr; $('#right_click_zipcode').text('〒' + zip); $('#right_click_addrnm').text(addr); var domEl = $('#right_click_div').html(); itsmo.map.openUserMsgWindow(point, domEl); itsmo.config._request = null; }, 'GET', prm, 'json'); }; itsmo.config.configShowRightClickMenuDecide = function(id){ itsmo.map.closeUserMsgWindow(); if(!itsmo.vars.g_config_dblclick_right_data){return false;} var lat = itsmo.vars.g_config_dblclick_right_data['lat']; var lon = itsmo.vars.g_config_dblclick_right_data['lon']; var addr = itsmo.vars.g_config_dblclick_right_data['addr']; var latlon = {lat: lat, lon: lon}; switch(id){ case 0: itsmo.myroute.hereStart(addr, latlon); break; case 1://ココから出発 itsmo.myroute.hereGo(addr, latlon); break; case 2://ココへ行く itsmo.myroute.hereByway(addr, latlon); break; case 3://携帯へ itsmo.map.Sharing.getInstance().show(lat,lon,'',addr); break; case 4://登録 itsmo.myspot.other_addmyspot(lat,lon,addr,'','','','','','ADDR','','',true); break; case 5://自宅設定 itsmo.mypage.mypage('home_add', {lat: lat, lon: lon}); break; } itsmo.vars.g_config_dblclick_right_data = {}; }; // 動作の速度モード変更。 itsmo.config.MapEasyConfig.prototype.setSpeedMode = function(n) { n = parseInt(n); switch (n) { case 0: case 1: case 2: break; default: n = 0; break; } this.speedmode = n; }; // ドラッグ時の動作変更。 itsmo.config.MapEasyConfig.prototype.setDrag = function(n) { n = parseInt(n); if (0 != n) { n = 1; } var chg = this.drag != n; this.drag = n; if (!chg) { return; } }; itsmo.config.MapEasyConfig.prototype.getChecked = function(id) { var e = $(id); return this.isElementChecked(e); }; itsmo.config.MapEasyConfig.prototype.isElementChecked = function(e) { if (null == e) { return false; } return (e.className == 'check-on'); }; itsmo.config.MapEasyConfig.prototype.getCheckBoxes = function(nameStr, prefix) { var es = $("[name="+ nameStr +"]"); var cnt = 0, n = []; for (var i = 0; i < es.length; ++i) { var es2 = es[i].childNodes; for (var j = 0; j < es2.length; ++j) { var e = es2[j]; if (!('id' in e)) { continue; } if (null == e.id || e.id.indexOf(prefix) != 0) { continue; } n.push(e); } } return n; }; itsmo.config.MapEasyConfig.prototype.getRightClickMenuValue = function() { var prefix = 'config_rightclickmenu_'; var es = this.getCheckBoxes('config_rightclickmenu', prefix); var cnt = 0, n = []; for (var i = 0; i < es.length; ++i) { var e = es[i]; if (this.isElementChecked(e)) { ++cnt; n.push(e.id.substring(prefix.length)); } } n = n.join(','); this.setRightClickMenu(n); }; itsmo.config.MapEasyConfig.prototype.getCenterFirstValue = function() { var prefix = 'config_centerfirst_'; var es = this.getCheckBoxes('config_centerfirst', prefix); var n = -1; for (var i = 0; i < es.length; ++i) { var e = es[i]; if (this.isElementChecked(e)) { n = parseInt(e.id.substring(prefix.length)); break; } } if (n >= 0) { this.setCenterFirst(n); } }; itsmo.config.MapEasyConfig.prototype.getDblClickValue = function() { var es = $("input[name=config_dblclick]"); var n = -1; for (var i = 0; i < es.length; ++i) { e = es[i]; if (e.checked) { n = parseInt(e.id.substring(e.name.length + 1)); break; } } if (n >= 0) { this.setDblClick(n); } }; itsmo.config.MapEasyConfig.prototype.getSpeedModeValue = function() { var es = $("input[name=config_speedmode]"); var n = -1; for (var i = 0; i < es.length; ++i) { e = es[i]; if (e.checked) { n = parseInt(e.id.substr(e.name.length + 1)); break; } } if (n >= 0) { this.setSpeedMode(n); } }; itsmo.config.MapEasyConfig.prototype.getDragValue = function() { var es = $("input[name=config_drag]"); var n = -1; for (var i = 0; i < es.length; ++i) { e = es[i]; if (e.checked) { n = parseInt(e.id.substr(e.name.length + 1)); break; } } if (n >= 0) { this.setDrag(n); } }; itsmo.config.MapEasyConfig.prototype.getFromWindow = function() { this.getDblClickValue(); this.getSpeedModeValue(); var checked = $('#config_wheeltype').is(':checked'); this.setWheelType(checked ? 0 : 1); var checked = $('#config_mappanel').is(':checked'); this.setMapPanel(checked ? 1 : 0); // var checked = $('#config_recommend').is(':checked'); // this.setMapRecommend(checked ? 1 : 0); var checked = $('#config_centerfirst').is(':checked'); this.setCenterFirst(checked ? 0 : 1); this.setMapInfoMinimize($('#config_mapinfo_minimize').val()); }; itsmo.config.MapEasyConfig.prototype.setToWindow = function() { /* var prefix = 'config_rightclickmenu_'; var es = this.getCheckBoxes('config_rightclickmenu', prefix); if(this.rightclickmenu != ""){ var n = this.rightclickmenu.split(','); for (var i = 0; i < es.length; ++i) { e = es[i]; var j = e.id.substring(prefix.length); itsmo.config.configSetCheckBox(e, n.indexOf(j) >= 0); } } e = $('#config_drag_' + this.drag)[0]; if (null == e) { e = $('#config_drag_0')[0]; } e.checked = true; e = itsmo.vars.g_document.getElementById('config_centerfirst_' + this.centerfirst); if (null == e) { e = itsmo.vars.g_document.getElementById('config_centerfirst_0'); } e.checked = true; */ e = $('#config_dblclick_' + this.dblclick)[0]; if (null == e) { e = $('#config_dblclick_0')[0]; } e.checked = true; if(itsmo.vars.g_range_cnt == 30){ this.speedmode = 1; }else if(itsmo.vars.g_range_cnt == 50){ this.speedmode = 2; }else{ this.speedmode = 0; } e = $('#config_speedmode_' + this.speedmode)[0]; if (null == e) { e = $('#config_speedmode_1')[0]; } e.checked = true; if(this.wheeltype == 0){ $('#config_wheeltype').attr('checked', 'checked'); }else{ $('#config_wheeltype').attr('checked', false); } /* if(this.mappanel != 0){ $('#config_mappanel').attr('checked', 'checked'); }else{ $('#config_mappanel').attr('checked', false); } */ // if(this.maprecommend != 0){ // $('#config_recommend').attr('checked', 'checked'); // }else{ // $('#config_recommend').attr('checked', false); // } if(this.centerfirst != 1){ $('#config_centerfirst').attr('checked', 'checked'); }else{ $('#config_centerfirst').attr('checked', false); } // if(this.mapinfo_minimize != 0){ // $('#config_mapinfo_minimize').attr('checked', 'checked'); // }else{ // $('#config_mapinfo_minimize').attr('checked', false); // } }; itsmo.config.MapEasyConfig.prototype.setToMap = function() { // TODO ////////////////////////////// /* if (0 == this.drag) { itsmo.vars.g_map_obj.dragOn(); } else { itsmo.vars.g_map_obj.dragOff(); } */ //this.setWheelTypeToMap(); //itsmo.vars.g_map_obj.CenterFirst = this.centerfirst; this.setDblClickToMap(); if (0 == this.mapcenter) { // 非表示 itsmo.vars.g_map_center_icon.hidden(); } else { // 表示 itsmo.vars.g_map_center_icon.visible(); } this.setMapInfoToMap(); this.setMapInfoMinimizeToMap(); // this.setMapRecommendToMap(); switch (this.speedmode){ case 0: itsmo.vars.g_range_cnt = 10; itsmo.vars.g_range_flag_rowcnt = 10; break; case 2: itsmo.vars.g_range_cnt = 50; itsmo.vars.g_range_flag_rowcnt = 50; break; case 1: default : itsmo.vars.g_range_cnt = 30; itsmo.vars.g_range_flag_rowcnt = 30; break; } // if (0 == this.mappanel) { // $('#map-btn').hide(); // } else { $('#map-btn').show(); // } }; //地図の表示情報パネル設定(中心点) itsmo.config.MapEasyConfig.prototype.configSetPanelMapCenter = function () { var e = $('#ajax_config_mapcenter span')[0]; if(e.className == "check-on"){//非表示 itsmo.vars.g_map_center_icon.visible(); this.mapcenter = 1; if (null != itsmo.vars.g_map_setcursor_id) { itsmo.vars.g_map_obj.visibleZdcTooltipById(itsmo.vars.g_map_setcursor_id); } }else if(e.className == "check-off"){//表示 itsmo.vars.g_map_center_icon.hidden(); this.mapcenter = 0; if (null != itsmo.vars.g_map_setcursor_id) { itsmo.vars.g_map_obj.hiddenZdcTooltipById(itsmo.vars.g_map_setcursor_id); } } itsmo.lib.cookie_set('config_mapcenter','' + this.mapcenter); }; itsmo.vars.g_config_drag_start_xy = null; // ドラッグ開始位置(座標) itsmo.vars.g_config_drag_add = [0, 0]; // マウス追従時の加算値 itsmo.vars.g_config_drag_timer = null; // マウス追従時のタイマー // ドラッグ動作:追従時のドラッグ開始。 itsmo.config.configDragStart = function() { itsmo.vars.g_config_drag_start_xy = new ZDC.Pixel(itsmo.vars.g_map_obj.MouseMoveX, itsmo.vars.g_map_obj.MouseMoveY); }; // ドラッグ動作:追従時のドラッグ移動。 itsmo.config.configDragMove = function() { if (null == itsmo.vars.g_config_drag_start_xy) { return; } // マウスの移動量を計算。 var x = itsmo.vars.g_map_obj.MouseMoveX - itsmo.vars.g_config_drag_start_xy.x; var y = itsmo.vars.g_map_obj.MouseMoveY - itsmo.vars.g_config_drag_start_xy.y; var nomove = 5; if (Math.abs(x) < nomove && Math.abs(y) < nomove) { // 少し動かした位では移動させない。 itsmo.vars.g_config_drag_add[0] = itsmo.vars.g_config_drag_add[1] = 0; return; } // 以下のピクセルまでの移動速度に制限する。 var maxmove = 64; if (x < 0) { x = Math.max(x, -maxmove); } else { x = Math.min(x, maxmove); } if (y < 0) { y = Math.max(y, -maxmove); } else { y = Math.min(y, maxmove); } itsmo.vars.g_config_drag_add[0] = x; itsmo.vars.g_config_drag_add[1] = y; if (null == itsmo.vars.g_config_drag_timer) { // タイマの呼び出し間隔。 var config_drag_timeout = 10; itsmo.vars.g_config_drag_timer = setInterval(itsmo.config.configDragTimer, config_drag_timeout); } }; // ドラッグ動作:追従時のタイマ関数 itsmo.config.configDragTimer = function() { if (null == itsmo.vars.g_config_drag_timer) { return; } if (0 == itsmo.vars.g_config_drag_add[0] && 0 == itsmo.vars.g_config_drag_add[1]) { return; } itsmo.vars.g_map_obj.movePx(itsmo.vars.g_config_drag_add[0], itsmo.vars.g_config_drag_add[1]); }; // ドラッグ動作:追従時のドラッグ終了。 itsmo.config.configDragEnd = function() { if (null != itsmo.vars.g_config_drag_timer) { clearInterval(itsmo.vars.g_config_drag_timer); } itsmo.vars.g_config_drag_start_xy = itsmo.vars.g_config_drag_timer = null; }; // 簡易設定値。 itsmo.vars.g_config = null; itsmo.config.configSetCheckBox = function(chkBox, isOn) { if(isOn){chkBox.attr('class','check-on');}else{chkBox.attr('class','check-off');} }; itsmo.config.configCheckBox = function(id) { var chkBox = $('#'+ id + ' span'); var clsName = chkBox.attr('class'); if(clsName == 'check-off'){ itsmo.config.configSetCheckBox(chkBox, true); }else{ itsmo.config.configSetCheckBox(chkBox, false); } }; // コンフィグ画面を表示。 itsmo.config.configShowWindow = function() { itsmo.vars.g_screen_non = 0; itsmo.vars.g_config.setToWindow(); itsmo.lib.map_windowopen('ajax_config_window'); }; itsmo.config.configSubmit = function() { itsmo.vars.g_config.getFromWindow(); itsmo.vars.g_config.saveConfig(); itsmo.vars.g_config.setToMap(); itsmo.vars.g_screen_non = 0; itsmo.lib.map_windowclose('ajax_config_window'); return false; }; itsmo.config.configCancel = function() { itsmo.vars.g_screen_non = 0; itsmo.lib.map_windowclose('ajax_config_window'); return false; };