//-------------------------------------------------------------
//初期設定
//-------------------------------------------------------------
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
var ZdcEmapSearchShopTimeout = null;
ZdcEmapIconImg['@SHOP'] = 'https://locations.kuronekoyamato.co.jp/p/yamato01/img/000000.gif';ZdcEmapIconW['@SHOP'] = 11;ZdcEmapIconH['@SHOP'] = 11;ZdcEmapIconOffsetX['@SHOP'] = -6;ZdcEmapIconOffsetY['@SHOP'] = -6;ZdcEmapIconImg['@NEW'] = 'https://locations.kuronekoyamato.co.jp/p/yamato01/img/new.gif';ZdcEmapIconW['@NEW'] = 23;ZdcEmapIconH['@NEW'] = 10;ZdcEmapIconOffsetX['@NEW'] = -12;ZdcEmapIconOffsetY['@NEW'] = -5;ZdcEmapIconImg['@SEL'] = 'https://locations.kuronekoyamato.co.jp/p/yamato01/img/icon_cursor/0003.gif';ZdcEmapIconW['@SEL'] = 51;ZdcEmapIconH['@SEL'] = 50;ZdcEmapIconOffsetX['@SEL'] = -26;ZdcEmapIconOffsetY['@SEL'] = -25;ZdcEmapIconImg['@SELB'] = 'https://locations.kuronekoyamato.co.jp/p/yamato01/img/icon_cursor/0000.gif';ZdcEmapIconW['@SELB'] = 51;ZdcEmapIconH['@SELB'] = 50;ZdcEmapIconOffsetX['@SELB'] = -26;ZdcEmapIconOffsetY['@SELB'] = -25;ZdcEmapIconImg['@TP'] = 'https://locations.kuronekoyamato.co.jp/p/yamato01/img/tp11.gif';ZdcEmapIconW['@TP'] = 11;ZdcEmapIconH['@TP'] = 11;ZdcEmapIconOffsetX['@TP'] = -6;ZdcEmapIconOffsetY['@TP'] = -6;ZdcEmapIconImg['001'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=001';ZdcEmapIconW['001'] = 24;ZdcEmapIconH['001'] = 24;ZdcEmapIconOffsetX['001'] = -12;ZdcEmapIconOffsetY['001'] = -12;ZdcEmapIconImg['002'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=002';ZdcEmapIconW['002'] = 24;ZdcEmapIconH['002'] = 24;ZdcEmapIconOffsetX['002'] = -12;ZdcEmapIconOffsetY['002'] = -12;ZdcEmapIconImg['003'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=003';ZdcEmapIconW['003'] = 24;ZdcEmapIconH['003'] = 25;ZdcEmapIconOffsetX['003'] = -12;ZdcEmapIconOffsetY['003'] = -13;ZdcEmapIconImg['101'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=101';ZdcEmapIconW['101'] = 24;ZdcEmapIconH['101'] = 24;ZdcEmapIconOffsetX['101'] = -12;ZdcEmapIconOffsetY['101'] = -12;ZdcEmapIconImg['171'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=171';ZdcEmapIconW['171'] = 24;ZdcEmapIconH['171'] = 24;ZdcEmapIconOffsetX['171'] = -12;ZdcEmapIconOffsetY['171'] = -12;ZdcEmapIconImg['175'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=175';ZdcEmapIconW['175'] = 27;ZdcEmapIconH['175'] = 24;ZdcEmapIconOffsetX['175'] = -14;ZdcEmapIconOffsetY['175'] = -12;ZdcEmapIconImg['189'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=189';ZdcEmapIconW['189'] = 25;ZdcEmapIconH['189'] = 25;ZdcEmapIconOffsetX['189'] = -13;ZdcEmapIconOffsetY['189'] = -13;ZdcEmapIconImg['207'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=207';ZdcEmapIconW['207'] = 20;ZdcEmapIconH['207'] = 24;ZdcEmapIconOffsetX['207'] = -10;ZdcEmapIconOffsetY['207'] = -12;ZdcEmapIconImg['418'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=418';ZdcEmapIconW['418'] = 24;ZdcEmapIconH['418'] = 24;ZdcEmapIconOffsetX['418'] = -12;ZdcEmapIconOffsetY['418'] = -12;ZdcEmapIconImg['436'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=436';ZdcEmapIconW['436'] = 20;ZdcEmapIconH['436'] = 27;ZdcEmapIconOffsetX['436'] = -10;ZdcEmapIconOffsetY['436'] = -14;ZdcEmapIconImg['563'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=563';ZdcEmapIconW['563'] = 25;ZdcEmapIconH['563'] = 25;ZdcEmapIconOffsetX['563'] = -13;ZdcEmapIconOffsetY['563'] = -13;ZdcEmapIconImg['SHP'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=SHP';ZdcEmapIconW['SHP'] = 25;ZdcEmapIconH['SHP'] = 25;ZdcEmapIconOffsetX['SHP'] = -13;ZdcEmapIconOffsetY['SHP'] = -13;ZdcEmapIconImg['YTC'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=YTC';ZdcEmapIconW['YTC'] = 36;ZdcEmapIconH['YTC'] = 24;ZdcEmapIconOffsetX['YTC'] = -18;ZdcEmapIconOffsetY['YTC'] = -12;ZdcEmapIconImg['Z95'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=Z95';ZdcEmapIconW['Z95'] = 25;ZdcEmapIconH['Z95'] = 25;ZdcEmapIconOffsetX['Z95'] = -13;ZdcEmapIconOffsetY['Z95'] = -13;ZdcEmapIconImg['Z96'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=Z96';ZdcEmapIconW['Z96'] = 25;ZdcEmapIconH['Z96'] = 25;ZdcEmapIconOffsetX['Z96'] = -13;ZdcEmapIconOffsetY['Z96'] = -13;ZdcEmapIconImg['Z97'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=Z97';ZdcEmapIconW['Z97'] = 25;ZdcEmapIconH['Z97'] = 25;ZdcEmapIconOffsetX['Z97'] = -13;ZdcEmapIconOffsetY['Z97'] = -13;ZdcEmapIconImg['Z98'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=Z98';ZdcEmapIconW['Z98'] = 24;ZdcEmapIconH['Z98'] = 24;ZdcEmapIconOffsetX['Z98'] = -12;ZdcEmapIconOffsetY['Z98'] = -12;ZdcEmapIconImg['Z99'] = 'https://locations.kuronekoyamato.co.jp/cgi/icon_select.cgi?cid=yamato01&icon_id=Z99';ZdcEmapIconW['Z99'] = 26;ZdcEmapIconH['Z99'] = 24;ZdcEmapIconOffsetX['Z99'] = -13;ZdcEmapIconOffsetY['Z99'] = -12;var Zdc_smap_g_oMap = null;
var Zdc_smap_g_oAjax = null;
//その他
var ZdcEmapSaveCond = new Array(50);//絞込条件
// mod 2022/09/28 M.date
ZdcEmapSaveCond[22] = '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_NOICON;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://locations.kuronekoyamato.co.jp/p/yamato01/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://locations.kuronekoyamato.co.jp/p/yamato01/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 += '' + this.link.structureType + ' | ';
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 += ''+ road_name +' | ';
html += '
';
html += '';
html += '交差点名 | ';
html += ''+ cross_name +' | ';
html += '
';
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 ZdcEmapSearchEventChangeLatlon;
var ZdcEmapSearchEventChangezoomAvailable = 1; //検索実行
function ZdcEmapSearchEventAction() {
if(!ZdcEmapSearchEventFlg) return;
if (ZdcEmapSearchShopTimeout) {
clearTimeout(ZdcEmapSearchShopTimeout);
if (ZdcEmapNearShop) ZdcEmapNearShop.abort();
ZdcEmapSearchEventStop();
ZdcEmapSearchPoint = null;
}
ZdcEmapSearchShopTimeout = setTimeout(function() {
ZdcEmapSearchPoint = null;
eval(ZdcEmapSearchEventFunc);
}, 600);
return;
ZdcEmapSearchPoint = null;
eval(ZdcEmapSearchEventFunc);
}
function ZdcEmapEventChangeLatlon() {
ZdcEmapSearchEventAction();
}
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);
ZdcEmapSearchEventChangeLatlon = ZDC.addListener(ZdcEmapMapObj, ZDC.MAP_CHG_LATLON, ZdcEmapEventChangeLatlon);
}
//検索イベント削除
function ZdcEmapSearchEventDel() {
if(ZdcEmapSearchEventDragmapend) ZDC.removeListener(ZdcEmapSearchEventDragmapend);
if(ZdcEmapSearchEventScrollmapend) ZDC.removeListener(ZdcEmapSearchEventScrollmapend);
if(ZdcEmapSearchEventChangezoomend) ZDC.removeListener(ZdcEmapSearchEventChangezoomend);
if(ZdcEmapSearchEventChangeLatlon) ZDC.removeListener(ZdcEmapSearchEventChangeLatlon);
ZdcEmapSearchEventDragmapend = null;
ZdcEmapSearchEventScrollmapend = null;
ZdcEmapSearchEventChangezoomend = null;
ZdcEmapSearchEventChangeLatlon = 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=yamato01";
// 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