次の例では、マーカをドラッグして移動できます。
マーカをドラッグして移動させるには、ZDC.addListener()を利用します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <script src="http://api.its-mo.com/cgi/loader.cgi?key=JSZ752c40ded32d&ver=2.0&api=zdcmap.js&enc=EUC&force=1" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ 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: 3 } ); /* 地図上の緯度経度を取得(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:500px; height:300px; top:0px; left:20px; position:absolute;"></div> </body> </html>