ラベルをドラッグ可能に設定

広告

ラベルを地図に表示した後で、ユーザーがラベルをドラッグして移動させることができるようにする方法を確認します。

まず初期値として設定する場合はLabelクラスのコンストラクタの3番目の引数で指定するオブジェクトのdraggableプロパティの値として指定して下さい。

var ymap = new Y.Map("map");
ymap.drawMap(new Y.LatLng(35.68025,139.7693), 15);

var label = new Y.Label(new Y.LatLng(35.68025,139.7693), 'text', {draggable:true});
ymap.addFeature(label);

上記のようにdraggableプロパティの値としてtrueを指定すると、ラベルをドラッグして移動させることが可能となります。なおデフォルトの値はfalseとなっているため、明示的に指定しない場合はドラッグできません。

ただ、コンストラクタで設定する方法ではドラッグが可能になりませんでした。記述方法が間違っているのか不具合なのかは分かっていません。

ラベルを表示後にドラッグ可能かどうか設定する場合はLabelクラスで用意されているsetDraggableメソッドを使います。

setDraggable(draggable:Boolean)
ラベルをマウスドラッグにより移動可能にするかどうかを設定します。

Parameters:
  draggable  ドラッグ可能かどうか

1番目の引数にtrueを設定するとドラッグ可能となります。

具体的には次のように記述します。

var ymap = new Y.Map("map");
ymap.drawMap(new Y.LatLng(35.68025,139.7693), 15);

var label = new Y.Label(new Y.LatLng(35.68025,139.7693), 'text');
ymap.addFeature(label);

label.setDraggable(true);

サンプルプログラム

では実際に試してみます。

code2_1.js

window.onload = function() {
  var ymap = new Y.Map("map");
  ymap.drawMap(new Y.LatLng(35.68025,139.7693), 15);

  var label1 = new Y.Label(new Y.LatLng(35.680385,139.769096), '集合場所');
  var label2 = new Y.Label(new Y.LatLng(35.675034,139.756587), '目的地', {draggable:true});

  ymap.addFeature(label1);
  ymap.addFeature(label2);

  label1.setDraggable(true);
}

sample2_1.html

<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>

    <title>Yahoo! JavaScriptマップAPI</title>

    <script type="text/javascript" charset="utf-8"
    src="http://js.api.olp.yahooapis.jp/OpenLocalPlatform/V1/jsapi?appid=(id)">
    </script>

    <script src="./js/code2_1.js" type="text/javascript"></script>

  </head>
  <body>
    <p>
    JavaScriptマップAPIを使ったサンプルです。
    </p>

    <div id="map" style="width:400px; height:300px"></div>

    <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
    <a href="http://developer.yahoo.co.jp/about">
    <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" border="0" style="margin:10px 15px 15px 15px"></a>
    <!-- End Yahoo! JAPAN Web Services Attribution Snippet -->

  </body>
</html>

ブラウザでアクセスすると次のように表示されます。

p2-1

ドラッグ可能に設定した場合、利用者がラベルをドラッグして移動させることができます。

p2-2

以上です。

( Written by Tatsuo Ikura+ )

Facebook Page