2014年10月7日火曜日

MarkerShape Properties coords


このプロパティはマーカーのクリック範囲を指定するためのプロパティになります。
星
この様な星形の画像をマーカーにした場合、
星の部分だけをクリック領域にしたい場合があると思います。
そのような場合下記のように設定すると星だけをマウスで触れるようになります。
var markerShape = {
    coord: [0, 70, 66, 60, 95, 0, 123, 60, 189, 70, 142, 114, 153, 179, 95, 148, 37, 179, 47, 114],
    type: "poly"
};
画像で見てみるとこの様な感じです。

画像の左上が座標(0,0)になります。
開始座標から時計回りに終了座標まで設定しています。
最初のパスと最後のパスは自動的に閉じられるようです。

同じような内容ですがこちらの記事も参考にして下さい。
Marker Methods setShape(shape:MarkerShape)

一応サンプルを載せておきます。
サンプルでは星の部分だけが有効になっていることを確認するため、
マーカーに
google.maps.event.addListener(marker, "mouseover", function () {
    this.setOpacity(0.5);
});
google.maps.event.addListener(marker, "mouseout", function () {
    this.setOpacity(1.0);
});
のようにイベントを設定しています。
星にマウスが乗ると少し透明になるようになっています。

以下サンプルです。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" />
    <title>google maps api v3</title>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
        google.maps.event.addDomListener(window, "load", function () {
            var map = document.getElementById("map_canvas");
            var latlng = new google.maps.LatLng(35.658580, 139.745433);
            var mapOptions = {
                zoom: 15,
                center: latlng
            };
            var gmap = new google.maps.Map(map, mapOptions);
            var marker = new google.maps.Marker({
                map: gmap,
                position: latlng,
                icon: "http://goo.gl/78QmnO",
                shape: {
                    coord: [0, 70, 66, 60, 95, 0, 123, 60, 189, 70, 142, 114, 153, 179, 95, 148, 37, 179, 47, 114],
                    type: "poly"
                }
            });

            // ここから下はsetShapeメソッドの機能確認用のイベントです。
            google.maps.event.addListener(marker, "mouseover", function () {
                this.setOpacity(0.5);
            });
            google.maps.event.addListener(marker, "mouseout", function () {
                this.setOpacity(1.0);
            });
            // ここまで下はsetShapeメソッドの機能確認用のイベントです。
        });
    </script>
</head>
<body>
    <div id="map_canvas" style="width: 400px; height: 400px"></div>
</body>
</html>


このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿