次の例では、マーカをドラッグして移動できます。
マーカをドラッグして移動させるには、ZDC.addListener()を利用します。
setIntervalを使用し、一定時間ごとにマウスポインタの表示位置の緯度経度でマーカの緯度経度を変更します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1"> <script src="//test.api.its-mo.com/v3/loader?key=JSZddc5111626c8|Zo4wz&api=zdcmap.js,control.js&enc=UTF8" type="text/javascript"></script> <script type="text/javascript"> var map, mrk, mkrLatLon, dragging = false, difLat, difLon, timerid; function loadMap() { map = new ZDC.Map( document.getElementById('ZMap'), { zoom: 9, mapType: ZDC.MAPTYPE_HIGHRES_LV18 } ); /* スケールバーを表示 */ map.addWidget(new ZDC.ScaleBar()); /* 通常のコントロールを表示 */ map.addWidget(new ZDC.Control()); /* マーカを作成 */ mrk = new ZDC.Marker( map.getLatLon(),{ color: ZDC.MARKER_COLOR_ID_YELLOW_L } ); /* マーカを追加 */ map.addWidget(mrk); /* 地図にイベントを追加 */ ZDC.addListener(map, ZDC.MAP_MOUSEUP, onMouseUp); /* マーカにイベントを追加 */ ZDC.addListener(mrk, ZDC.MARKER_MOUSEDOWN, onMouseDown); ZDC.addListener(mrk, ZDC.MARKER_MOUSEUP, onMouseUp); /* documentにイベントを追加 */ ZDC.addDomListener(document, 'mouseup', onMouseUp); } /* マウスダウンイベント処理 */ function onMouseDown() { if(dragging) { return; } /* マウスダウン位置の緯度経度とマーカの緯度経度の差分を保持 */ mkrLatLon = mrk.getLatLon(); var cLatLon = map.getPointerPosition(); difLat = cLatLon.lat - mkrLatLon.lat; difLon = cLatLon.lon - mkrLatLon.lon; dragging = true; /* 30ミリ秒ごとにマーカの緯度経度を変更する */ timerid = setInterval(onMouseMove, 30); } /* マーカドラッグ中の処理 */ function onMouseMove() { var latlon = map.getPointerPosition(); /* マーカの表示位置を設定 */ var mkLat = latlon.lat - difLat; var mkLon = latlon.lon - difLon; mkrLatLon = new ZDC.LatLon(mkLat, mkLon); mrk.moveLatLon(mkrLatLon); } /* マウスアップイベント処理 */ function onMouseUp() { if(dragging) { dragging = false; /* タイマーをクリアする */ clearInterval(timerid); } } </script> </head> <body onload="loadMap();"> <div id="ZMap" style="border:1px solid #777777; width:750px; height:500px; top:0px; left:20px; position:absolute;"></div> </body> </html>