//------------------------------------------------------------- //初期設定 //------------------------------------------------------------- var ZdcEmapDisableReSearch = false; //地図 var ZdcEmapMapObj = null; var ZdcEmapMapUsrctl = null; var ZdcEmapMapZoomctl = null; var ZdcEmapWindowWidth = 0; var ZdcEmapWindowHeight = 0; var ZdcEmapAnyDispPx = 0; var ZdcEmapAnyDispPy = 0; //ユーザーレイヤー var ZdcEmapMapUserLyrId = null; //マーカー記憶 var ZdcEmapMapShopMrkId = new Array(50); var ZdcEmapMapShopMrkCnt = null; var ZdcEmapMapPoiMrkId = new Array(50); var ZdcEmapMapPoiMrkCnt = null; var ZdcEmapMapShopDetailMrkId = null; var ZdcEmapMapCurFocusMrkId = null; var ZdcEmapMapSearchPoint = null; // add 2011/12/27 H.osamoto //吹き出し //小窓 var ZdcEmapListObj; var ZdcEmapNekiListObj; var ZdcEmapDetailObj; var ZdcEmapCondObj; var ZdcEmapCondStaticObj; var ZdcEmapFRouteStaticObj; var ZdcEmapRouteCase = ''; var ZdcEmapSrchCombRootResultObj; //Myエリア追加用表示エリア var ZdcEmapMyareaWrapperObj; //各ボタンのイベント管理 var ZdcEmapSearchClickFlg = 0; //アイコン情報 var ZdcEmapIconImg = new Array(); var ZdcEmapIconW = new Array(); var ZdcEmapIconH = new Array(); var ZdcEmapIconOffsetX = new Array(); var ZdcEmapIconOffsetY = new Array(); // 地図緯度経度 var mappoint; var widget2,widget3; // add 2012/04/02 K.Masuda var detailflg; // add 2012/11/06 H.osamoto var printflg; // add 2012/11/06 H.osamoto ZdcEmapIconImg['@SHOP'] = 'https://www.e-map.ne.jp/p/msins01/img/000000.gif';ZdcEmapIconW['@SHOP'] = 11;ZdcEmapIconH['@SHOP'] = 11;ZdcEmapIconOffsetX['@SHOP'] = -6;ZdcEmapIconOffsetY['@SHOP'] = -6;ZdcEmapIconImg['@NEW'] = 'https://www.e-map.ne.jp/p/msins01/img/new.gif';ZdcEmapIconW['@NEW'] = 23;ZdcEmapIconH['@NEW'] = 10;ZdcEmapIconOffsetX['@NEW'] = -12;ZdcEmapIconOffsetY['@NEW'] = -5;ZdcEmapIconImg['@SEL'] = 'https://www.e-map.ne.jp/p/msins01/img/icon_cursor/0003.gif';ZdcEmapIconW['@SEL'] = 51;ZdcEmapIconH['@SEL'] = 50;ZdcEmapIconOffsetX['@SEL'] = -26;ZdcEmapIconOffsetY['@SEL'] = -25;ZdcEmapIconImg['@SELB'] = 'https://www.e-map.ne.jp/p/msins01/img/icon_cursor/0000.gif';ZdcEmapIconW['@SELB'] = 51;ZdcEmapIconH['@SELB'] = 50;ZdcEmapIconOffsetX['@SELB'] = -26;ZdcEmapIconOffsetY['@SELB'] = -25;ZdcEmapIconImg['@TP'] = 'https://www.e-map.ne.jp/p/msins01/img/tp11.gif';ZdcEmapIconW['@TP'] = 11;ZdcEmapIconH['@TP'] = 11;ZdcEmapIconOffsetX['@TP'] = -6;ZdcEmapIconOffsetY['@TP'] = -6;ZdcEmapIconImg['0'] = 'https://www.e-map.ne.jp/cgi/icon_select.cgi?cid=msins01&icon_id=0';ZdcEmapIconW['0'] = 19;ZdcEmapIconH['0'] = 25;ZdcEmapIconOffsetX['0'] = -10;ZdcEmapIconOffsetY['0'] = -13;ZdcEmapIconImg['1'] = 'https://www.e-map.ne.jp/cgi/icon_select.cgi?cid=msins01&icon_id=1';ZdcEmapIconW['1'] = 19;ZdcEmapIconH['1'] = 25;ZdcEmapIconOffsetX['1'] = -10;ZdcEmapIconOffsetY['1'] = -13;ZdcEmapIconImg['2'] = 'https://www.e-map.ne.jp/cgi/icon_select.cgi?cid=msins01&icon_id=2';ZdcEmapIconW['2'] = 19;ZdcEmapIconH['2'] = 25;ZdcEmapIconOffsetX['2'] = -10;ZdcEmapIconOffsetY['2'] = -13;var Zdc_smap_g_oMap = null; var Zdc_smap_g_oAjax = null; //その他 var ZdcEmapSaveCond = new Array(50);//絞込条件 // mod 2022/09/28 M.date ZdcEmapSaveCond[1] = '1';ZdcEmapSaveCond[6] = '1'; var QSTRING = location.search.replace(/^\?/, ''); var ZdcEmapScaleType = "0"; // 最大縮尺、最小縮尺 var max_lvl = parseInt("0"); var min_lvl = parseInt("18"); var zoomRange = []; for(var i = parseInt('0'); i <= parseInt('18'); i++) zoomRange.push(i); /** * Convert zoom from virtual zoom to real zoom */ function EncRealZoom(zoom){ for(var i = 0; i < zoomRange.length; i++){ if(zoom == zoomRange[i]){ return i + 1; } } } /** * Convert zoom from real zoom to virtual zoom */ function DecRealZoom(zoom){ return zoomRange[zoom] - 1; } //初期化関数 function ZdcEmapInit(init_lat, init_lon, init_lv){ if (!document.getElementById('ZdcEmapMap')) return; //地図の基本設定 ---------------------------------------- var svrurl = "https://api.e-map.ne.jp/mapapi/"; //初期位置 if (!init_lat || !init_lon) { init_lat = 128440300; init_lon = 503173140; } if (!init_lv || init_lv == 0) { init_lv = 16; } init_lv = init_lv - 1; var map_type = ZDC.MAPTYPE_COLOR;var wheelType = 3; ZdcEmapMapObj = new ZDC.Map( document.getElementById('ZdcEmapMap'), { latlon : new ZDC.LatLon(init_lat, init_lon), zoom : init_lv, wheelType: wheelType, mapType: map_type } ); // 地図ダブルクリックでスクロール ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_DBLCLICK, ZdcEmapMoveLatLon); ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_CHG_ZOOM, ZdcEmapMapEventLogZoom); ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_CHG_LATLON, ZdcEmapMapEventLogLoc); //各e-map用コントロール -------------------------------- //リスト表示部 ZdcEmapListObj = document.getElementById('ZdcEmapList'); if(!ZdcEmapListObj) ZdcEmapListObj = document.createElement('DIV');//light用ダミー ZdcEmapNekiListObj = ZdcEmapListObj; //検索条件指定部 ZdcEmapCondObj = document.getElementById('ZdcEmapCond'); if(!ZdcEmapCondObj) ZdcEmapCondObj = document.createElement('DIV');//light用ダミー ZdcEmapCondStaticObj = document.getElementById('ZdcEmapCondStatic'); if(!ZdcEmapCondStaticObj) ZdcEmapCondStaticObj = document.createElement('DIV');//light用ダミー //出発地指定ルート固定表示 add 2013/06/03 Y.Matsukawa ZdcEmapFRouteStaticObj = document.getElementById('ZdcEmapFRouteStatic'); //出発地複合FW結果表示部 ZdcEmapSrchCombRootDeptObj = document.getElementById('ZdcEmapSrchCombRootDept'); if(!ZdcEmapSrchCombRootDeptObj) ZdcEmapSrchCombRootDeptObj = document.createElement('DIV');//light用ダミー //複合ルート結果表示部 ZdcEmapSrchCombRootResultObj = document.getElementById('ZdcEmapSrchCombRootResult'); if(!ZdcEmapSrchCombRootResultObj) ZdcEmapSrchCombRootResultObj = document.createElement('DIV');//light用ダミー //その他 ----------------------------------------------- //スケールバー widgetScaleBar = new ZDC.ScaleBar(); ZdcEmapMapObj.addWidget(widgetScaleBar); //標準コントロール var widget = new ZDC.Control( { pos: { top: 10, left: 10 }, type: ZDC.CTRL_TYPE_NORMAL, close: true } ); ZdcEmapMapObj.addWidget(widget); //ユーザコントロール //createUserControl(); // 縮尺+−ボタン if(ZdcEmapScaleType == '1') ZdcEmapLvlScaleBtn(); //地図中心マーク // add 2016/10/03 Y.Uesugi [ //VICS対応 地図重畳 // add 2016/10/03 Y.Uesugi ] } // ユーザコントロール function createUserControl() { /* ユーザコントロールに使用する画像 */ var imgurldir = 'img/usrcontrol/'; var control = { /* ホームポジションへ移動ボタン */ home: { /* 画像のURL */ src: imgurldir + 'home.png', /* 配置位置 */ pos:{top: 28,right: 34}, /* 画像の表示サイズ */ imgSize:{width: 22,height: 22} }, north: { src: imgurldir + 'north.png', pos: {top: 10,right: 38}, imgSize: {width: 16,height: 17} }, east: { src: imgurldir + 'east.png', pos: {top: 30,right: 18}, imgSize: {width: 16,height: 17} }, south: { src: imgurldir + 'south.png', pos: {top: 50,right: 38}, imgSize: {width: 16,height: 17} }, west: { src: imgurldir + 'west.png', pos: {top: 30,right: 58}, imgSize: {width: 16,height: 17} }, bar: { src: imgurldir + 'bar.png', pos: {top: 91,right: 38}, imgSize: {width: 17,height: 110} }, btn: { src: imgurldir + 'btn.png', pos: {top: 0,right: 1}, imgSize: {width: 15,height: 10} }, minus: { src: imgurldir + 'minus.png', pos: {top: 206,right: 38}, imgSize: {width: 16,height: 17} }, plus: { src: imgurldir + 'plus.png', pos: {top: 72,right: 38}, imgSize: {width: 16,height: 17} } }; var options = { /* つまみの上限位置(縮尺レベル変更バーのtop: -2pxの位置) */ start: -2, /* つまみの移動量 */ interval: 6 }; /* ユーザコントロールを作成 */ widget = new ZDC.UserControl(control, options); /* ユーザコントロールを追加 */ ZdcEmapMapObj.addWidget(widget); }; //------------------------------------------------------------- //地図制御 //------------------------------------------------------------- // クリック位置へ移動 function ZdcEmapMoveLatLon() { var latlon = ZdcEmapMapObj.getClickLatLon(); ZdcEmapMapObj.moveLatLon(latlon); } //地図上にカーソル表示 var ZdcEmapMapCurMrkId = null; function ZdcEmapMapCursorSet(lat, lon){ //アイコンの作成 mrk = ZdcEmapMakeMrkApi2(0, lat, lon, ZdcEmapIconW['@SELB'], ZdcEmapIconH['@SELB'],0,0, ZdcEmapIconOffsetX['@SELB'], ZdcEmapIconOffsetY['@SELB'],0,0, ZdcEmapIconImg['@SELB'], '', '', '', '', 0, null, null, null ); //if (ZdcEmapMapShopMrkId[i] != null) ZdcEmapMapObj.removeWidget(ZdcEmapMapCurMrkId); mod 2011/12/20 Y.Matsukawa if (ZdcEmapMapCurMrkId != null) ZdcEmapMapObj.removeWidget(ZdcEmapMapCurMrkId); ZdcEmapMapObj.addWidget(mrk); ZdcEmapMapCurMrkId = mrk; } //地図上のカーソル外す function ZdcEmapMapCursorRemove(){ if (ZdcEmapMapCurMrkId != null) { ZdcEmapMapObj.removeWidget(ZdcEmapMapCurMrkId); ZdcEmapMapCurMrkId = null; } //詳細表示中 ZdcEmapMapFrontShopDetail();//詳細アイコンを前面にもってくる } //地図移動 function ZdcEmapMapMove(lat, lon, lvl){ var center = new ZDC.LatLon(Number(lat), Number(lon)); ZdcEmapMapObj.moveLatLon(center); if(lvl) ZdcEmapMapObj.setZoom(lvl); } function ZdcEmapMapScroll(lat, lon){ var center = new ZDC.LatLon(lat, lon); //マップ移動 ZdcEmapMapObj.moveLatLon(center); } //地図移動 function ZdcEmapMapMoveBox(minlat,minlon,maxlat,maxlon,pt,noin){ var p1 = new ZdcPoint(minlon,minlat,2); var p2 = new ZdcPoint(maxlon,maxlat,2); var bx = new ZdcBox(p1,p2); if(pt != null) { var s = ZdcEmapMapObj.getMapBoxScale(bx,pt); ZdcEmapMapObj.setMapLocation(pt); if(noin != 1 || (noin == 1 && s < ZdcEmapMapObj.getMapScale())) ZdcEmapMapObj.setMapScale(s); } else { var s = ZdcEmapMapObj.getMapBoxScale(bx); ZdcEmapMapObj.setMapLocation(bx.getBoxCenter()); if(noin != 1 || (noin == 1 && s < ZdcEmapMapObj.getMapScale())) ZdcEmapMapObj.setMapScale(s); } } //地図移動(API2.0用) function ZdcEmapMapMoveBoxApi2(minlat,minlon,maxlat,maxlon){ var varlatlon_box = new Array(); // 地図表示縮尺取得用仮想表示エリア varlatlon_box[0] = new ZDC.LatLon(minlat, minlon); varlatlon_box[1] = new ZDC.LatLon(maxlat, maxlon); var adjust = ZdcEmapMapObj.getAdjustZoom(varlatlon_box); // 地図移動&縮尺変更 if(adjust != null) { ZdcEmapMapObj.moveLatLon(adjust.latlon); ZdcEmapMapObj.setZoom(adjust.zoom); } else { ZdcEmapMapObj.setZoom(0); } } // +-ボタン function ZdcEmapLvlScaleBtn(){ var now_lvl = parseInt(DecRealZoom(ZdcEmapMapObj.getZoom()) + 1); } // +-ボタンでの地図縮尺変更 function ZdcEmapLvlScaleChanged(type){ var now_lvl = parseInt(DecRealZoom(ZdcEmapMapObj.getZoom()) + 1); if( max_lvl <= now_lvl || now_lvl >= min_lvl ){ if(type == 'p'){ if( now_lvl < min_lvl ){ now_lvl++; } now_lvl = EncRealZoom(now_lvl); ZdcEmapMapObj.setZoom(now_lvl - 1); } else { if( now_lvl > max_lvl ){ now_lvl--; } now_lvl = EncRealZoom(now_lvl); ZdcEmapMapObj.setZoom(now_lvl - 1); } } else { if(type == 'p'){ now_lvl = min_lvl; } else { now_lvl = max_lvl; } now_lvl = EncRealZoom(now_lvl); ZdcEmapMapObj.setZoom(now_lvl - 1); } ZdcEmapLvlScaleBtn(); } //------------------------------------------------------------- //アイコン登録 //------------------------------------------------------------- function ZdcEmapMakeMrk(id,lat,lon, sizew,sizeh,shadowsizew,shadowsizeh, offsetx,offsety,shdoffsetx,shdoffsety,msgoffsetx,msgoffsety, image,shadowimage, data1,data2,nflg, mouseclickmarker,mouseovermarker,mouseoutmarker ,lvl ) { var p,mrk,item; var icon = new ZdcIcon(); //アイコンの作成 icon.size = new ZdcSize(sizew, sizeh); icon.offset = new ZdcPixel(offsetx, offsety); // icon.imageの末尾が「.gif」でないと、内部的にGIF以外として処理されてしまうので、末尾を無理矢理「.gif」にしています。 // GIF以外で処理されてしまうと、IEで印刷時に透過GIFが透過しません。 // タイムスタンプ値を付加しているのは、キャッシュ抑制のためです。これがないと、アイコン画像を差し替えた際に表示が崩れることがあります。(IEのみ) if (image.substr(image.length-4, 4) == ".gif") { icon.image = image; } else { dd = new Date(); ts = dd.getTime(); if (image.indexOf('?') < 0) { icon.image = image+"?dummy="+ts+".gif"; } else { icon.image = image+"&dummy="+ts+".gif"; } } if(shadowimage) { icon.shadowsize = new ZdcSize(shadowsizew, shadowsizeh); icon.shdoffset = new ZdcPixel(shdoffsetx,shdoffsety); icon.shadowimage = shadowimage; } icon.msgoffset = new ZdcPixel(msgoffsetx,msgoffsety); //マーカーの作成 p = new ZdcPoint(lon, lat, 2); mrk = new ZdcMarker(p, icon); //マーカーの基本情報 mrk.id = id; mrk.data1 = data1; mrk.data2 = data2; mrk.nflg = nflg; if (lvl) mrk.lvl = lvl; mrk.Point = p; mrk.mouseclickmarker = mouseclickmarker; mrk.mouseovermarker = mouseovermarker; mrk.mouseoutmarker = mouseoutmarker; //マーカークリック時のイベント登録 if(mrk.mouseclickmarker) ZdcEvent.addListener(mrk, "mouseclickmarker", mrk.mouseclickmarker); if(mrk.mouseovermarker) ZdcEvent.addListener(mrk, "mouseovermarker" , mrk.mouseovermarker); if(mrk.mouseoutmarker) ZdcEvent.addListener(mrk, "mouseoutmarker" , mrk.mouseoutmarker); // イベントなしの時はマウスカーソルを変更しない if (!mrk.mouseclickmarker && !mrk.mouseovermarker) mrk.setType('static'); return mrk; } //------------------------------------------------------------- //アイコン登録(API2.0用) //------------------------------------------------------------- var rtnhtml; function ZdcEmapMakeMrkApi2(id,lat,lon, sizew,sizeh,newsizew,newsizeh, offsetx,offsety,newoffsetx,newoffsety, image,newimage, data1,data2,message,nflg, mouseclickmarker, mouseovermarker, lvl, seq_icon, mouseoutmarker ) { var mrk; var w; var h; var latlon = new ZDC.LatLon(lat, lon); var iconimage // icon.imageの末尾が「.gif」でないと、内部的にGIF以外として処理されてしまうので、末尾を無理矢理「.gif」にしています。 // GIF以外で処理されてしまうと、IEで印刷時に透過GIFが透過しません。 // タイムスタンプ値を付加しているのは、キャッシュ抑制のためです。これがないと、アイコン画像を差し替えた際に表示が崩れることがあります。(IEのみ) if (image.substr(image.length-4, 4) == ".gif") { iconimage = image; } else { dd = new Date(); ts = dd.getTime(); if (image.indexOf('?') < 0) { iconimage = image+"?dummy="+ts+".gif"; } else { iconimage = image+"&dummy="+ts+".gif"; } } // 連番アイコン(拠点アイコン画像は使わない) if (seq_icon) { if (seq_icon.img) { var divstyle = "display:table-cell;text-align:center;vertical-align:middle;"; divstyle += "width:"+seq_icon.width+"px;"; divstyle += "height:"+seq_icon.height+"px;"; divstyle += "background-image:url(img/icon_seq/"+seq_icon.img+");"; divstyle += "background-repeat:no-repeat;"; divstyle += "background-color:transparent;"; if (mouseclickmarker) divstyle += "cursor:pointer;"; var numstyle = ""; numstyle += "color:"+seq_icon.textColor+";"; numstyle += "font-weight:"+seq_icon.fontWeight+";"; numstyle += "font-size:"+seq_icon.fontSize+";"; numstyle += "font-family:"+seq_icon.fontFamily+";"; numstyle += "background-color:transparent;"; var w = seq_icon.width + (seq_icon.borderWidth * 2); var h = seq_icon.height + (seq_icon.borderWidth * 2); var ofsx = (Math.floor(w / 2)) * -1; var ofsy = (Math.floor(h / 2)) * -1; mrk = new ZDC.UserWidget(latlon, { html: '
' + ''+seq_icon.seq+'' + '
', size: new ZDC.WH(w, h), offset: new ZDC.Pixel(ofsx, ofsy), propagation: false }); } else { var divstyle = "display:table-cell;text-align:center;vertical-align:middle;"; if (seq_icon.circle) divstyle += "border-radius:50%;"; divstyle += "border:"+seq_icon.borderColor+" "+seq_icon.borderWidth+"px solid;"; divstyle += "background-color:"+seq_icon.backgroundColor+";"; divstyle += "width:"+seq_icon.width+"px;"; divstyle += "height:"+seq_icon.height+"px;"; if (mouseclickmarker) divstyle += "cursor:pointer;"; var numstyle = ""; numstyle += "color:"+seq_icon.textColor+";"; numstyle += "font-weight:"+seq_icon.fontWeight+";"; numstyle += "font-size:"+seq_icon.fontSize+";"; numstyle += "font-family:"+seq_icon.fontFamily+";"; var w = seq_icon.width + (seq_icon.borderWidth * 2); var h = seq_icon.height + (seq_icon.borderWidth * 2); var ofsx = (Math.floor(w / 2)) * -1; var ofsy = (Math.floor(h / 2)) * -1; mrk = new ZDC.UserWidget(latlon, { html: '
' + ''+seq_icon.seq+'' + '
', size: new ZDC.WH(w, h), offset: new ZDC.Pixel(ofsx, ofsy), propagation: false }); } mrk.userwidget = true; // 通常の拠点アイコン(画像) } else { // newアイコンありの場合 if (newimage) { // 拠点アイコン mrk = new ZDC.Marker(latlon,{ /* マーカのサイズに合わせて位置を調整する */ offset: new ZDC.Pixel(offsetx, offsety), contentOffset: new ZDC.Pixel(newoffsetx, newoffsety), custom: { base : { src: iconimage, imgSize: ZDC.WH(sizew, sizeh) }, content : { src: newimage, imgSize: ZDC.WH(newsizew, newsizeh) } } }); // newアイコンなしの場合 } else { // 拠点アイコン mrk = new ZDC.Marker(latlon,{ /* マーカのサイズに合わせて位置を調整する */ offset: new ZDC.Pixel(offsetx, offsety), custom: { base : { src: iconimage, imgSize: ZDC.WH(sizew, sizeh) } } }); } } //マーカーの基本情報 mrk.id = id; mrk.data1 = data1; mrk.data2 = data2; mrk.nflg = nflg; mrk.lat = lat; mrk.lon = lon; if (lvl) mrk.lvl = lvl; //クリック時のイベント登録 if (mouseclickmarker) { //吹き出しテキスト用アンカーイベント if (mrk.userwidget) { ZDC.addListener(mrk, ZDC.USERWIDGET_CLICK, mouseclickmarker); } else { ZDC.addListener(mrk, ZDC.MARKER_CLICK, mouseclickmarker); } } //マウスオーバー時のイベント登録 if (mouseovermarker) { var center = ZdcEmapMapObj.getLatLon(); var box = ZdcEmapMapObj.getLatLonBox(); var maplatlen = box.getMax().lat - box.getMin().lat; var maplonlen = box.getMax().lon - box.getMin().lon; //表示位置の調整 if (center.lat > lat) { //地図中心より下側に表示する場合 var offsetycenter1 = 10; var offsetycenter2 = 90; var offsety = -40; } else { //地図中心より上側に表示する場合 var offsetycenter1 = -10; var offsetycenter2 = -120; var offsety = 25; } if (center.lon > lon) { //地図中心より左側に表示する場合 var offsetxcenter1 = 10; var offsetxcenter2 = 102; var offsetx = 20; } else { //地図中心より右側に表示する場合 var offsetxcenter1 = -10; var offsetxcenter2 = -120; var offsetx = -170; } var mes = message.split("("); var userwidgetmoverlabel = { html: '
'+mes[0]+'
', size: new ZDC.WH(150, 60), offset: new ZDC.Pixel(offsetx, offsety) }; var latlonmover = new ZDC.LatLon(lat, lon); var userwidgetmover = new ZDC.UserWidget(latlonmover, userwidgetmoverlabel); //吹き出しテキストイベント ZdcEmapMapObj.addWidget(userwidgetmover); //マウスオーバーイベント登録 if (mrk.userwidget) { ZDC.addListener(mrk, ZDC.USERWIDGET_MOUSEOVER, mouseovermarker); } else { ZDC.addListener(mrk, ZDC.MARKER_MOUSEOVER, mouseovermarker); } //マウスアウトイベント登録 if (mrk.userwidget) { ZDC.addListener(mrk, ZDC.USERWIDGET_MOUSEOUT, mouseoutmarker); } else { ZDC.addListener(mrk, ZDC.MARKER_MOUSEOUT, mouseoutmarker); } } return mrk; } //------------------------------------------------------------- //吹き出し用アンカー //------------------------------------------------------------- var ZdcEmapHukidasiAnchor = null; function ZdcEmapAnchorDraw(id) { ZdcEmapTipsHideInfoInterval(); //動作判定 if(id == null) id = this.id; //駅アイコン座標取得 var icnlat = ZdcEmapMapPoiMrkId[id].lat; var icnlon = ZdcEmapMapPoiMrkId[id].lon; var center = ZdcEmapMapObj.getLatLon(); var box = ZdcEmapMapObj.getLatLonBox(); var maplatlen = box.getMax().lat - box.getMin().lat; var maplonlen = box.getMax().lon - box.getMin().lon; var s = ZdcEmapMapObj.getZoom(); //オブジェクトの作成 ZdcEmapTipsMarker = ZdcEmapMapPoiMrkId[id]; if(!ZdcEmapMapObj || !ZdcEmapTipsMarker) return; //表示位置の調整 if (center.lat > icnlat) { //地図中心より下側に表示する場合 var offsetycenter1 = 3; var offsetycenter2 = 22; } else { //地図中心より上側に表示する場合 var offsetycenter1 = -3; var offsetycenter2 = -30; } if (center.lon > icnlon) { //地図中心より左側に表示する場合 var offsetxcenter1 = 3; var offsetxcenter2 = 25; } else { //地図中心より右側に表示する場合 var offsetxcenter1 = -3; var offsetxcenter2 = -30; } var mrklat1 = ZdcEmapTipsMarker.lat + (offsetycenter1 * (maplatlen / 448)); var mrklon1 = ZdcEmapTipsMarker.lon + (offsetxcenter1 * (maplonlen / 448)); var mrklat2 = ZdcEmapTipsMarker.lat + (offsetycenter2 * (maplatlen / 448)); var mrklon2 = ZdcEmapTipsMarker.lon + (offsetxcenter2 * (maplonlen / 448)); var latlons = []; latlons[0] = new ZDC.LatLon(mrklat1, mrklon1); latlons[1] = new ZDC.LatLon(mrklat2, mrklon2); /* 線を作成 */ var pl = new ZDC.Polyline(latlons, { strokeWeight: 1, fillColor: '#FF0000' }); /* 線を地図に追加 */ ZdcEmapMapObj.addWidget(pl); ZdcEmapHukidasiAnchor = pl; ZDC.addListener(ZdcEmapTipsMarker, ZDC.MARKER_MOUSEOUT, function(){pl.hidden();}); } //------------------------------------------------------------- //ルート探索 //------------------------------------------------------------- var ZdcEmapRouteOptionsObj; var ZdcEmapRouteSearchObj; var ZdcEmapRoutePoint1 = null; var ZdcEmapRoutePoint2 = null; var ZdcEmapRouteName1 = null; var ZdcEmapRouteName2 = null; var ZdcEmapRouteFlagLayer; var ZdcEmapRouteFlagIcon1; var ZdcEmapRouteFlagIcon2; var ZdcEmapRouteFlagStartMarker1; var ZdcEmapRouteFlagStartMarker2; //将来フォームで条件を変えられる用に変数化しておく var ZdcEmapRouteType = 1; var ZdcEmapRouteWalkPSC = 0; var ZdcEmapRouteWalkFloorFlg = 0; var ZdcEmapRouteWalkDepFloor = 0; var ZdcEmapRouteWalkDepStationFlg = 0; var ZdcEmapRouteWalkArrFloorFlg = 0; var ZdcEmapRouteWalkArrStationFlg = 0; var ZdcEmapRouteWalkArrFloor = 0; //検索入り口(API2.0用) function ZdcEmapRouteSearchApi2(id, route_type) { if(ZdcEmapButtonNG()) return; if(ZdcEmapRouteType == 0) return; ZdcEmapPoiRouteClear(); ZdcEmapRouteCase = 'eki'; //ルートタイプのデフォルト指定 if (route_type === undefined) { ZdcEmapRouteType = 1; } if (route_type !== undefined) ZdcEmapRouteType = route_type; var stationpoint = ZdcEmapMapPoiMrkId[id]; var shoppoint = ZdcEmapMapShopDetailMrkId; //パラメーターの設定 ZdcEmapRoutePoint1 = new ZDC.LatLon(stationpoint.lat, stationpoint.lon); ZdcEmapRoutePoint2 = new ZDC.LatLon(shoppoint.lat, shoppoint.lon); if(ZdcEmapRouteType == 1 || ZdcEmapRouteType == 3) ZdcEmapRouteSearchWalkApi2(stationpoint, shoppoint); if(ZdcEmapRouteType == 2) ZdcEmapRouteSearchCarApi2(stationpoint, shoppoint); //画面の移動 ZdcEmapMapMoveBoxApi2(stationpoint.lat,stationpoint.lon,shoppoint.lat,shoppoint.lon); } //検索入り口 function ZdcEmapRouteSearch(name1,mx1,my1,name2,mx2,my2,route_type) { if(ZdcEmapButtonNG()) return; if(ZdcEmapRouteType == 0) return; ZdcEmapPoiRouteClear(); //パラメーターの設定 ZdcEmapRouteName1 = name1; ZdcEmapRouteName2 = name2; var stationpoint = new ZDC.LatLon(Number(my2), Number(mx2)); var shoppoint = new ZDC.LatLon(Number(my1), Number(mx1)); ZdcEmapRoutePoint1 = stationpoint; ZdcEmapRoutePoint2 = shoppoint; //ルートタイプのデフォルト指定 if (route_type === undefined) { ZdcEmapRouteType = 1; } if (route_type !== undefined) ZdcEmapRouteType = route_type; if(ZdcEmapRouteType == 1 || ZdcEmapRouteType == 3) ZdcEmapRouteSearchWalkApi2(stationpoint, shoppoint); if(ZdcEmapRouteType == 2) ZdcEmapRouteSearchCarApi2(stationpoint, shoppoint); //画面の移動 ZdcEmapMapMoveBoxApi2(stationpoint.lat,stationpoint.lon,shoppoint.lat,shoppoint.lon); } // 歩行者ルート検索(API2.0用) function ZdcEmapRouteSearchWalkApi2(p1,p2) { ZdcEmapReadOn(); /* スタート地点の緯度経度 */ from = p1; /* ゴール地点の緯度経度 */ to = p2; /* 歩行者の速さを80m/minとする */ var walk_speed = 80; ZDC.Search.getRouteByWalk({ from: from, to: to , station: "bothoff" },function(status, res) { if (status.code == '000') { /* 取得成功 */ ZdcEmapwriteRoute(status, res, 1); ZdcEmapDispRouteDistance(res.route.distance); } else { /* 取得失敗 */ if(ZdcEmapRouteType == 1) { var distance = Math.ceil(ZDC.getLatLonToLatLonDistance(from, to)); if ((from.lat != to.lat || from.lon != to.lon) && distance > 8) { } //失敗だった場合自動車で再検索する ZdcEmapRouteSearchCarApi2(ZdcEmapRoutePoint1,ZdcEmapRoutePoint2); } else { alert('距離が長すぎるか探索に失敗しました。 [' + status.code + ']'); } return; } }); } // 自動車ルート検索(API2.0用) function ZdcEmapRouteSearchCarApi2(p1,p2) { //ZdcEmapReadOn(); /* スタート地点の緯度経度 */ from = p1; /* ゴール地点の緯度経度 */ to = p2; ZDC.Search.getRouteByDrive({ from: from, to: to },function(status, res) { if (status.code == '000') { /* 取得成功 */ ZdcEmapwriteRoute(status, res, 2); ZdcEmapDispRouteDistance(res.route.distance); } else { /* 取得失敗 */ alert('距離が長すぎるか探索に失敗しました。 [' + status.code + ']'); // ルート検索終了 ZdcEmapReadOff(); } }); } // ルート描画 var ZdcEmapRoutePolyline = []; var ZdcEmapRouteStartFlag; var ZdcEmapRouteEndFlag; var ZdcEmapRouteMarker = []; var ZdcEmapMsgInfo = null; function ZdcEmapwriteRoute(status, res, stype) { var guyde_type = { 'start': { custom: { base: { src: 'https://www.e-map.ne.jp/p/msins01/img/route/RouteStart.png', imgSize: new ZDC.WH(35, 35), imgTL: new ZDC.TL(0, 0) } }, offset: ZDC.Pixel(-5, -36) }, 'end': { custom: { base: { src: 'https://www.e-map.ne.jp/p/msins01/img/route/RouteEnd.png', imgSize: new ZDC.WH(35, 35), imgTL: new ZDC.TL(0, 0) } }, offset: ZDC.Pixel(-5, -36) } }; var line_property = { //歩行者用 '通常通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '横断歩道': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '横断通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '歩道橋': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '踏切内通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '連絡通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '建物内通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '敷地内通路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '乗換リンク': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '通路外': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '引き込みリンク': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, //自動車用 '高速道路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '都市高速道路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '国道': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '主要地方道': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '都道府県道': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '一般道路(幹線)': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '一般道路(その他)': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '導入路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '細街路(主要)': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '細街路(詳細)': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, 'フェリー航路': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'}, '道路外': {strokeColor: '#3000ff', strokeWeight: 5, lineOpacity: 0.6, lineStyle: 'solid'} }; /* スタートとゴールのアイコンを地図に重畳します */ ZdcEmapRouteStartFlag = new ZDC.Marker(from,guyde_type['start']); ZdcEmapRouteEndFlag = new ZDC.Marker(to,guyde_type['end']); /* スタートとゴールのウィジットが他のマーカの 下にならないようにz-indexを設定します */ ZdcEmapRouteStartFlag.setZindex(110); ZdcEmapRouteEndFlag.setZindex(110); ZdcEmapMapObj.addWidget(ZdcEmapRouteStartFlag); ZdcEmapMapObj.addWidget(ZdcEmapRouteEndFlag); var link = res.route.link; var latlons = []; for (var i=0, j=link.length; i移動距離:' + distance + '
移動時間:' + time + ' 分', size: new ZDC.WH('', '') }; } else { var userwidgetrouterlabel = { html: '
移動距離:' + distance + '
', size: new ZDC.WH('', '') }; } var positionrouter = new ZDC.TL('', ''); var userwidgetrouter = new ZDC.StaticUserWidget(positionrouter, userwidgetrouterlabel); //レイヤーへ表示 ZdcEmapMapObj.addWidget(userwidgetrouter); userwidgetrouter.open(); ZdcEmapTipsTopShapeLayer = userwidgetrouter; } //歩行者検索 function ZdcEmapRouteSearchWalk(name1,p1,name2,p2) { ZdcEmapReadOn(); //オブジェクト作成 ZdcEmapRouteOptionsObj = new ZdcPRouteSearchOptions(); ZdcEmapRouteSearchObj = new ZdcPRouteSearch(); ZdcEmapRouteOptionsObj.showMarker = false; ZdcEmapRouteOptionsObj.pointFlg = 2; ZdcEmapRouteSearchObj.timeout = 5000; ZdcEvent.addListener(ZdcEmapRouteSearchObj, 'end', ZdcEmapRouteSearchEndWalk); ZdcEmapMapObj.addPRouteSearch(ZdcEmapRouteSearchObj); //デザイン指定 ZdcEmapRouteSearchObj.routeWidth = 5; ZdcEmapRouteSearchObj.routeOpacity = "0.5"; ZdcEmapRouteSearchObj.routeColor = "#0000ff"; //位置指定 ZdcEmapRouteOptionsObj.arrivalPoint.point = p1; ZdcEmapRouteOptionsObj.departurePoint.point = p2; //検索条件指定 //共通 ZdcEmapRouteOptionsObj.psc = ZdcEmapRouteWalkPSC; ZdcEmapRouteOptionsObj.floorFlg = ZdcEmapRouteWalkFloorFlg; //到着点(出発点) ZdcEmapRouteOptionsObj.arrivalPoint.name = name1; ZdcEmapRouteOptionsObj.arrivalPoint.floorFlg = ZdcEmapRouteWalkArrFloorFlg; ZdcEmapRouteOptionsObj.arrivalPoint.stationFlg = ZdcEmapRouteWalkArrStationFlg; ZdcEmapRouteOptionsObj.arrivalPoint.floor = ZdcEmapRouteWalkArrFloor; //出発点(拠点) ZdcEmapRouteOptionsObj.departurePoint.name = name2; ZdcEmapRouteOptionsObj.departurePoint.stationFlg = ZdcEmapRouteWalkDepStationFlg; ZdcEmapRouteOptionsObj.departurePoint.floor = ZdcEmapRouteWalkDepFloor; //検索開始 ZdcEmapRouteSearchObj.search(ZdcEmapRouteOptionsObj); } function ZdcEmapRouteSearchEndWalk() { ZdcEmapReadOff(); var result = this.getResult(); if(result && (result.status !== 0)) { //エラー処理 if(ZdcEmapRouteType == 1) { //失敗だった場合自動車で再検索する ZdcEmapRouteSearchCar(ZdcEmapRouteName1,ZdcEmapRoutePoint1,ZdcEmapRouteName2,ZdcEmapRoutePoint2); } else { alert('距離が長すぎるか探索に失敗しました。 [' + result.status + ']'); } return; } //スタート/ゴールのアイコンを描画 ZdcEmapRouteFlag(); //ルート距離表示 var ZdcEmapRouteDistance = document.getElementById("ZdcEmapRouteDistance"); if (ZdcEmapRouteDistance) { distance = result.distance; if (distance < 1000) { distance = distance+' m'; } else { distance = distance / 100; distance = Math.round(distance); distance = distance / 10; distance += ' km'; } ZdcEmapRouteDistance.innerHTML = distance; } } //自動車検索 function ZdcEmapRouteSearchCar(name1,p1,name2,p2) { ZdcEmapReadOn(); //オブジェクト作成 ZdcEmapRouteOptionsObj = new ZdcRouteSearchOptions(); ZdcEmapRouteSearchObj = new ZdcRouteSearch(); ZdcEmapRouteOptionsObj.showMarker = false; ZdcEmapRouteOptionsObj.pointFlg = 2; ZdcEmapRouteSearchObj.timeout = 5000; ZdcEvent.addListener(ZdcEmapRouteSearchObj, 'end', ZdcEmapRouteSearchEndCar); ZdcEmapMapObj.addRouteSearch(ZdcEmapRouteSearchObj); //デザイン指定 ZdcEmapRouteSearchObj.routeWidth = 5; ZdcEmapRouteSearchObj.routeOpacity = "0.5"; ZdcEmapRouteSearchObj.routeColor = "#0000ff"; //位置指定 ZdcEmapRouteOptionsObj.arrivalPoint = p1; ZdcEmapRouteOptionsObj.departurePoint = p2; //検索開始 ZdcEmapRouteSearchObj.search(ZdcEmapRouteOptionsObj); } function ZdcEmapRouteSearchEndCar() { ZdcEmapReadOff(); var result = this.getResult(); if(result && (result.status !== 0)) { //エラー処理 alert('距離が長すぎるか探索に失敗しました。 [' + result.status + ']'); return; } //スタート/ゴールのアイコンを描画 ZdcEmapRouteFlag(); //ルート距離表示 var ZdcEmapRouteDistance = document.getElementById("ZdcEmapRouteDistance"); if (ZdcEmapRouteDistance) { distance = result.distance; if (distance < 1000) { distance = distance+' m'; } else { distance = distance / 100; distance = Math.round(distance); distance = distance / 10; distance += ' km'; } ZdcEmapRouteDistance.innerHTML = distance; } } // ナビゲーションIDによる複合ルート詳細取得(API2.0用) function ZdcEmapRouteCombGetByNaviID(naviid, wgs) { ZdcEmapReadOn(); ZdcEmapPoiRouteClear(); var datum = 'TOKYO'; if (wgs) datum = 'WGS84'; ZDC.Search.getCombRouteByNaviId({ naviid: naviid, datum: datum },function(status, res) { if (status.code == '000') { /* 取得成功 */ ZdcEmapRouteCombWrite(status, res, wgs); } else { ZdcEampHiddenWait(); /* 取得失敗 */ alert('距離が長すぎるか探索に失敗しました。 [' + status.code + ']'); // ルート検索終了 ZdcEmapReadOff(); } }); } // 複合ルート描画(API2.0用) function ZdcEmapRouteCombWrite(status, res, wgs) { ZdcEmapShopMsgClose(); ZdcEmapPoiRouteClear(); var latlons = [], idx = 0; var navi_sections = res.navi_sections; var from, to; for (var i=0, j=navi_sections.length; i'; html += ''; html += ''; html += '構造種別'; html += ''+ this.link.type +''; html += ''; ZdcEmapMsgInfo.setHtml(html); ZdcEmapMsgInfo.moveLatLon(new ZDC.LatLon(this.link.line[0].lat, this.link.line[0].lon)); ZdcEmapMsgInfo.open(); }; //ルートバルーンの吹き出しを描画(自動車) function ZdcEmapMarkerClickDrive() { var url = this.link.guidance.crossImageUri || this.link.guidance.signboardImageUri || this.link.guidance.etcImageUri; var road_name = this.link.guidance.roadName; var cross_name = this.link.guidance.crossName; if (road_name == null) { road_name = 'なし'; } if (cross_name == null) { cross_name = 'なし'; } var html = '
'; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += '
道路名'+ road_name +'
交差点名'+ cross_name +'
'; ZdcEmapMsgInfo.setHtml(html); ZdcEmapMsgInfo.moveLatLon(new ZDC.LatLon(this.link.line[0].lat, this.link.line[0].lon)); ZdcEmapMsgInfo.open(); }; //------------------------------------------------------------- //自動検索のイベント管理 //------------------------------------------------------------- var ZdcEmapSearchEventFlg = 0; var ZdcEmapSearchEventFunc = null; var ZdcEmapSearchEventDragmapend; var ZdcEmapSearchEventScrollmapend; var ZdcEmapSearchEventChangezoomend; var ZdcEmapSearchEventChangezoomAvailable = 1; //検索実行 function ZdcEmapSearchEventAction() { if(!ZdcEmapSearchEventFlg) return; ZdcEmapSearchPoint = null; eval(ZdcEmapSearchEventFunc); } function ZdcEmapEventDragAction() { ZdcEmapSearchEventAction(); } function ZdcEmapEventScrollAction() { ZdcEmapSearchEventAction(); } function ZdcEmapEventZoomAction() { if (!ZdcEmapSearchEventChangezoomAvailable) { ZdcEmapSearchEventChangezoomAvailable = 1; return; } // 縮尺+−ボタン更新 if(ZdcEmapScaleType == '1') ZdcEmapLvlScaleBtn(); ZdcEmapSearchEventAction(); } //検索イベント追加 function ZdcEmapSearchEventAdd(func) { ZdcEmapSearchEventDel(); ZdcEmapSearchEventFunc = func; ZdcEmapSearchEventDragmapend = ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_DRAG_END, ZdcEmapEventDragAction); ZdcEmapSearchEventScrollmapend = ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_SCROLL_END, ZdcEmapEventScrollAction); ZdcEmapSearchEventChangezoomend = ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_CHG_ZOOM, ZdcEmapEventZoomAction); } //検索イベント削除 function ZdcEmapSearchEventDel() { if(ZdcEmapSearchEventDragmapend) ZDC.removeListener(ZdcEmapSearchEventDragmapend); if(ZdcEmapSearchEventScrollmapend) ZDC.removeListener(ZdcEmapSearchEventScrollmapend); if(ZdcEmapSearchEventChangezoomend) ZDC.removeListener(ZdcEmapSearchEventChangezoomend); ZdcEmapSearchEventDragmapend = null; ZdcEmapSearchEventScrollmapend = null; ZdcEmapSearchEventChangezoomend = null; delete ZdcEmapSearchEventFunc; } //検索イベント開始 function ZdcEmapSearchEventStart() { ZdcEmapSearchEventAdd("ZdcEmapSearchShop()"); ZdcEmapSearchEventFlg = 1; } //検索イベント停止 function ZdcEmapSearchEventStop() { ZdcEmapSearchEventDel(); ZdcEmapSearchEventFlg = 0; } //------------------------------------------------------------- //吹き出し // Shapeレイヤーがあるとクリック等が効かないためややこしい処理をしている // もっと簡単に実装できるようになったら作り直すこと //------------------------------------------------------------- var ZdcEmapTipsInterval = 5000;//簡易噴出し表示間隔 var ZdcEmapTipsTimerID = null;//強制的に噴出しを消すタイマーID var ZdcEmapTipsMarker = null;//噴出し表示のマーカーオブジェクト var ZdcEmapTipsShapeLayer = null;//噴出しレイヤー var ZdcEmapTipsShape = null;//簡易噴出しシェープオブジェクト var ZdcEmapTipsTopMarker = null;//最上位表示用一時マーカーレイヤー var ZdcEmapTipsTopMarkerLayer = null;//最上位表示用一時マーカーオブジェクト var ZdcEmapTipsTopShapeLayer = null;//最上位表示用一時噴出しレイヤー//施設データの簡易噴出し表示メソッド function ZdcEmapTipsClick(id) { ZdcEmapTipsHideInfoInterval(); //動作判定 if(id == null) id = this.id; var s = ZdcEmapMapObj.getZoom(); //オブジェクトの作成 ZdcEmapTipsMarker = ZdcEmapMapPoiMrkId[id]; if(!ZdcEmapMapObj || !ZdcEmapTipsMarker) return; var lat = ZdcEmapTipsMarker.lat; var lon = ZdcEmapTipsMarker.lon; var center = ZdcEmapMapObj.getLatLon(); var box = ZdcEmapMapObj.getLatLonBox(); var maplatlen = box.getMax().lat - box.getMin().lat; var maplonlen = box.getMax().lon - box.getMin().lon; //表示位置の調整 if (center.lat > lat) { //地図中心より下側に表示する場合 var offsetycenter1 = 10; var offsetycenter2 = 90; var offsety = -40; } else { //地図中心より上側に表示する場合 var offsetycenter1 = -10; var offsetycenter2 = -120; var offsety = 25; } if (center.lon > lon) { //地図中心より左側に表示する場合 var offsetxcenter1 = 10; var offsetxcenter2 = 102; var offsetx = 20; } else { //地図中心より右側に表示する場合 var offsetxcenter1 = -10; var offsetxcenter2 = -120; var offsetx = -170; } var message = ZdcEmapTipsMarker.message; var mes = message.split("("); var userwidgetmoverlabel = { html: '
'+mes[0]+'
', size: new ZDC.WH(150, 60), offset: new ZDC.Pixel(offsetx, offsety) }; var latlonmover = new ZDC.LatLon(lat, lon); var userwidgetmover = new ZDC.UserWidget(latlonmover, userwidgetmoverlabel); //吹き出し表示 ZdcEmapMapObj.addWidget(userwidgetmover); ZDC.addListener(ZdcEmapTipsMarker, ZDC.MARKER_MOUSEOUT, function(){userwidgetmover.close();}); //ZdcEmapAnchorDraw(id); userwidgetmover.open(); ZdcEmapTipsShapeLayer = userwidgetmover; ZdcEmapTipsTimerID = setTimeout(ZdcEmapTipsHideInfoInterval, ZdcEmapTipsInterval); } //レイヤーを閉じる function ZdcEmapTipsClose() { //シェイプレイヤーを閉じる if(ZdcEmapTipsShapeLayer) { ZdcEmapTipsShapeLayer.close(); } if(ZdcEmapHukidasiAnchor) { ZdcEmapMapObj.removeWidget(ZdcEmapHukidasiAnchor); } ZdcEmapTipsShapeLayer = null; ZdcEmapTipsShape = null; ZdcEmapHukidasiAnchor = null; //最上位マーカーレイヤーを閉じる if(ZdcEmapTipsTopMarkerLayer) { ZdcEmapTipsTopMarkerLayer.clearMarker(); ZdcEmapMapObj.removeUserLayer(ZdcEmapTipsTopMarkerLayer); ZdcEmapTipsTopMarker.mouseclickmarker = null; } ZdcEmapTipsTopMarker = null; ZdcEmapTipsTopMarkerLayer = null; //タイマーのクリア if(ZdcEmapTipsTimerID) clearTimeout(ZdcEmapTipsTimerID); ZdcEmapTipsTimerID = null; } //強制的に簡易噴出し非表示メソッド function ZdcEmapTipsHideInfoInterval() { if(ZdcEmapTipsTimerID) clearTimeout(ZdcEmapTipsTimerID); ZdcEmapTipsTimerID = null; ZdcEmapTipsClose(); } //簡易噴出し非表示メソッド function ZdcEmapTipsHideInfo() { if(!ZdcEmapTipsIsMouseOutMarker()) return; ZdcEmapTipsClose(); } //IEでmouseoutイベントがマーカーオブジェクトの子ノードの間で発生しているかどうか function ZdcEmapTipsIsMouseOutMarker() { if(!document.all) return true; if(!ZdcEmapTipsTopMarker) return true; if(!window.event || window.event.type != "mouseout") return false; var tmp = window.event.toElement; while(tmp) { if(tmp == ZdcEmapTipsTopMarker.doc) return false; tmp = tmp.parentElement; } return true; } //------------------------------------------------------------- //その他 //------------------------------------------------------------- //HTML読み込み用ajax通信関数 function ZdcEmapHttpRequestHtml(url, func, nowaitmsg, typ) { if(!nowaitmsg) ZdcEmapReadOn();//読み込み中フラグon if(typ == undefined) typ = 1; //通信処理 var ZdcEmapHttpRequestObj = new ZdcEmapHttpRequest('EUC', 'EUC'); ZdcEmapHttpRequestObj.request(url, function(html,status) { /*Add 2019/02/07 Chien Nguyen[*/ /*Transit to page error when call API get status locker is error*/ var D_FLAG_BLOKER = 0; if (D_FLAG_BLOKER == 1 && html == 'error') { var url_err = ""; // mod 2022/10/04 M.date window.location.href = url_err; return; } /*Add 2019/02/07 Chien Nguyen[*/ if(status == 3) status = 0;//タイムアウトは無視 連続呼び出し時の動作が安定しないので if(status == 9) status = 0;//テンプレートが無い場合に対応 if(html == null) html = "";//nullは出さない if(status == 0) { func(html,status); } else { //エラー処理 func(html,status); } ZdcEmapReadOff();//読み込み中フラグoff //},10000); mod 2012/09/07 Y.Matsukawa },10000,typ); } //ボタン押下拒否判定 function ZdcEmapButtonNG() { if(ZdcEmapReadCheck()) return 1;//読み込み中の動作がある if(ZdcEmapDisableReSearch) return 1; // add 2014/12/14 Y.Matsukawa return 0; } //読み込み中フラグ var ZdcEmapReading = 0;//読み込み中・処理中フラグ function ZdcEmapReadOn() { ZdcEmapReading ++; } function ZdcEmapReadOff() { if(ZdcEmapReading <= 0) return; ZdcEmapReading --; } function ZdcEmapReadCheck() { if(ZdcEmapReading > 0) return 1;//読み込み中の動作がある return 0; } //指定された駅・施設アイコンを前面にもってくる function ZdcEmapMapFrontPoi(id){ // if(ZdcEmapMapPoiMrkId[id] != null) { // var mrk = ZdcEmapMapUserLyr.getMarkerById(ZdcEmapMapPoiMrkId[id]); // ZdcEmapMapUserLyr.removeMarkerById(ZdcEmapMapPoiMrkId[id]); // ZdcEmapMapPoiMrkId[id] = ZdcEmapMapUserLyr.addMarker(mrk); // //イベント当てなおし // if(mrk.mouseclickmarker) ZdcEvent.addListener(mrk, "mouseclickmarker", mrk.mouseclickmarker); // if(mrk.mouseovermarker) ZdcEvent.addListener(mrk, "mouseovermarker" , mrk.mouseovermarker); // if(mrk.mouseoutmarker) ZdcEvent.addListener(mrk, "mouseoutmarker" , mrk.mouseoutmarker); // } } //common func ZdcSetErrorStatus = function(retcd, st){ var status; if (st == undefined){ var errPart = retcd.charAt(4); var errPartStr = retcd.slice(3, 5); if( errPart == '9' ){ status = 1; //パラメータエラー }else if( retcd.substr(4,4) == '1009' ){ status = 5; //該当データなし }else if ( errPart == '2' ){ status = 6; //認証エラー }else if ( errPart == '6' || errPart == '7' || errPart == '8' || errPartStr == '15'){ status = 2; //サーバーエラー }else{ status = 9; //その他エラー } }else{ status = st; } this.retCode = retcd || ''; this.type = ''; this.status = status; this.recCount = 0; this.hitCount = 0; this.rest = false; this.items = []; } // APIイベントログ出力 // (event_log.cgiを呼び出し) function ZdcEmapEventLog(evt) { var url = "http://127.0.0.1/cgi2/event_log.cgi"; url += "?key=53nQ2P9tlg4vBGnAjvBvnAqf9FmgbPB5idj5SdXuomA4fhEzTErxAzTjrxpzThngszFIlgrnFDng0z46oRAL0ungdzFblg3nFengVz57oRuLTE"; url += "&event="+evt; url += "&opt=msins01"; // add 2012/02/20 H.osamoto [ // add 2012/02/20 H.osamoto ] var httpReq = new ZdcEmapHttpRequest('EUC', 'EUC'); httpReq.request(url, function(reference_text,status){ }, 60000); } function ZdcEmapMapEventLogZoom() { ZdcEmapEventLog('mapapi_ChangeZoom'); } function ZdcEmapMapEventLogLoc() { ZdcEmapEventLog('mapapi_ChangeLocation'); } // add 2012/04/02 K.Masuda [ //------------------------------------------------------------- // 地図中心点取得関数 // 引数:type 1 : 十進度形式 // 2 : ミリ秒形式 // 3 : 度分秒形式 // datum TOKYO : 日本測地系 // WGS84 : 世界測地系 // 返却:緯度経度オブジェクト //------------------------------------------------------------- function ZdcEmapGetMapCenter(type,datum){ var p; var center = ZdcEmapMapObj.getLatLon(); if( datum == 'WGS84' ){ // 世界測地系 center = ZDC.tkyTowgs(center); } if( type == 2 ){ // ミリ秒形式 msLat = ZDC.degToms(center.lat); msLon = ZDC.degToms(center.lon); p = new ZDC.LatLon(msLat,msLon); return p; } else if( type == 3 ){ // 度分秒形式 dmsLat = ZDC.degTodms(center.lat); dmsLon = ZDC.degTodms(center.lon); p = new ZDC.LatLon(dmsLat.deg+"."+dmsLat.min+"."+dmsLat.sec,dmsLon.deg+"."+dmsLon.min+"."+dmsLon.sec); return p; } else { // 十進度形式 return center; } } // add 2012/04/02 K.Masuda ] var ZdcEmapStationCircleMode = 0; var ZdcEmapStationCircleWidgets = new Array(); var ZdcEmapStationCircleRad = 1000;function ZdcEmapStationCircleStart() { ZdcEmapStationCircleMode = 1; ZdcEmapStationCircle(); } function ZdcEmapStationCircleEnd() { ZdcEmapStationCircleRemove(); ZdcEmapStationCircleMode = 0; } function ZdcEmapStationCircle() { if (!ZdcEmapStationCircleMode) return; ZdcEmapSearchEventStop(); ZdcEmapReadOn(); var ll = ZdcEmapMapObj.getLatLon(); var box = ZdcEmapMapObj.getLatLonBox(); var rad = Math.ceil(ZDC.getLatLonToLatLonDistance(box.getMax(), box.getMin()) / 2); if (rad > 10000) rad = 10000; var ival = { latlon: ll, radius: rad, datum: "TOKYO", limit: "0,100" }; ZDC.Search.getStationByLatLon(ival, function(stt, res){ ZdcEmapStationCircleResult(stt, res); }); } function ZdcEmapStationCircleResult(status, result) { // エラー処理 if(status.code != "000" || status.text != "ok") { alert("検索に失敗しました ekires["+status.code+","+status.text+"]"); ZdcEmapSearchEventStart(); ZdcEmapReadOff(); return; } // 円描画 ZdcEmapStationCircleRemove(); var latloncheck = ""; var cnt = 0; //for(i = 0; i < result.item.length; i++) { for(i = result.item.length - 1; i >= 0; i--) { var item = result.item[i]; var ll = item.poi.latlon; var llstr = ll.lat+":"+ll.lon; if (latloncheck.indexOf(llstr) < 0) { // 同一緯度経度で複数回描画しない為 latloncheck += llstr+","; ZdcEmapStationCircleWidgets[cnt] = new ZDC.Oval({ latlon: ll, //x: < ?php echo $D_STT_CIRCLE_RAD; ? >, //y: < ?php echo $D_STT_CIRCLE_RAD; ? >},{ x: ZdcEmapStationCircleRad, y: ZdcEmapStationCircleRad},{ strokeColor: "#3366FF", strokeWeight: 1, fillColor: "#D4E7FB", fillOpacity: 0.5, lineStyle: "solid", lineOpacity: 1, propagation: true, circle: false }); ZdcEmapMapObj.addWidget(ZdcEmapStationCircleWidgets[cnt]); cnt++; } } ZdcEmapSearchEventStart(); ZdcEmapReadOff(); } function ZdcEmapStationCircleRemove() { var cnt = ZdcEmapStationCircleWidgets.length; for (i = 0; i < cnt; i++) { ZdcEmapMapObj.removeWidget(ZdcEmapStationCircleWidgets[i]); ZdcEmapStationCircleWidgets[i] = null; } ZdcEmapStationCircleWidgets = new Array(); } function ZdcEmapAddOptionalHistory(name) { var obj = null; obj = document.getElementById("history_count"); if (!obj) return; var cnt = obj.value; var his = ""; var idx = 0; for (var i = 1; i <= cnt; i++) { obj = document.getElementById("history_name_"+i); if (obj) { idx++; var nm = obj.value; var url = ""; obj = document.getElementById("history_url_"+i); if (obj) url = obj.value; if (idx > 1) his += "\t\t\t > \t\t"; his += ''+nm+''; } } his += "\t\t\t > \t\t"; his += name; obj = document.getElementById("history"); if (!obj) return; obj.innerHTML = his; } function ZdcEmapCondDisabled() { if (document.ZdcEmapCondForm !== undefined) { document.body.style.cursor = 'wait'; document.ZdcEmapCondForm.disabled = true; for(i=0;i