次の例では、マーカをドラッグして移動できます。
マーカをドラッグして移動させるには、ZDC.addListener()を利用します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <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, difLat, difLon, lat = 35.6778614, lon = 139.7703167; function loadMap() { var latlon = new ZDC.LatLon(lat, lon); map = new ZDC.Map( document.getElementById('ZMap'), { latlon: latlon, zoom: 9, mapType: ZDC.MAPTYPE_HIGHRES_LV18 } ); /* スケールバーを作成 */ map.addWidget(new ZDC.ScaleBar()); /* 通常のコントロールを表示 */ map.addWidget(new ZDC.Control()); /* 地図上の緯度経度を取得(getPointerPosition)できるようにする */ map.pointerPositionOn(); /* マーカを作成 */ mkrLatLon = new ZDC.LatLon(lat, lon); mrk = new ZDC.Marker(mkrLatLon); /* マーカを追加 */ map.addWidget(mrk); /* 地図にイベントを追加 */ ZDC.addListener(map, ZDC.MAP_MOUSEMOVE, onMouseMove); ZDC.addListener(map, ZDC.MAP_MOUSEUP, onMouseUp); /* マーカにイベントを追加 */ ZDC.addListener(mrk, ZDC.MARKER_MOUSEMOVE, onMouseMove); ZDC.addListener(mrk, ZDC.MARKER_MOUSEDOWN, onMouseDown); ZDC.addListener(mrk, ZDC.MARKER_MOUSEUP, onMouseUp); /* documentにイベントを追加 */ ZDC.addDomListener(document, 'mouseup', onMouseUp); } /* マウスダウンイベント処理 */ function onMouseDown() { /* マウスダウン位置の緯度経度とマーカの緯度経度の差分を保持 */ var cLatLon = map.getPointerPosition(); difLat = cLatLon.lat - mkrLatLon.lat; difLon = cLatLon.lon - mkrLatLon.lon; dragging = true; } /* マウスムーブイベント処理 */ function onMouseMove() { /* ドラッグ中のみ処理させる */ if(dragging) { 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; } } </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>