SYNCERのロゴ
アイキャッチ画像

Marker: shape

shapeはMarkerクラスのオプションです。マーカーをクリックしたり、ドラッグ操作をする時に、ポインターに反応する領域を調整できます。

MarkerShape

領域をMarkerShapeオブジェクトで指定する。

var opts = {
	shape: {
		type: "poly" ,
		coords: [ 0,0, 22,0, 0,40 ] ,
	} ,
} ;

デモ

shapeを指定したデモです。それぞれでマーカーをドラッグ操作できる場所が違うのを確認しましょう。

真ん中の円部分だけ、有効な領域にしました。

var marker = new google.maps.Marker( {
	map: map ,
	position: map.getCenter() ,
	draggable: true ,
	icon: {
		url: "./marker.png" ,
		scaledSize: new google.maps.Size( 200, 200 ) ,
	} ,
	shape: {
		type: "circle" ,
		coords: [ 100, 100, 100 ] ,
	} ,
} ) ;

多角形

左上側の三角形部分だけ、有効な領域にしました。

var marker = new google.maps.Marker( {
	map: map ,
	position: map.getCenter() ,
	draggable: true ,
	icon: {
		url: "./marker.png" ,
		scaledSize: new google.maps.Size( 200, 200 ) ,
	} ,
	shape: {
		type: "poly" ,
		coords: [ 0, 0, 200, 0, 0, 200 ] ,
	} ,
} ) ;

四角形

上半分の四角形部分だけ、有効な領域にしました。

var marker = new google.maps.Marker( {
	map: map ,
	position: map.getCenter() ,
	draggable: true ,
	icon: {
		url: "./marker.png" ,
		scaledSize: new google.maps.Size( 200, 200 ) ,
	} ,
	shape: {
		type: "rect" ,
		coords: [ 0, 0, 200, 100 ] ,
	} ,
} ) ;

サンプルコード

<!DOCTYPE html>
<html>
<head>
	<style>
#map-canvas {
	width: 600px ;
	height: 600px ;
}
	</style>
</head>
<body>
	<div id="map-canvas"></div>

	<script src="//maps.googleapis.com/maps/api/js?key={APIキー}"></script>
	<script>
var mapDiv = document.getElementById( "map-canvas" ) ;

// Map
var map = new google.maps.Map( mapDiv, {
	center: new google.maps.LatLng( 35, 139 ) ,
	zoom: 11 ,
} ) ;

// Marker
var marker = new google.maps.Marker( {
	map: map ,
	position: map.getCenter() ,
	draggable: true ,
	icon: {
		url: "https://lab.syncer.jp/Web/API/Google_Maps/JavaScript/Marker/shape/marker.png" ,
		scaledSize: new google.maps.Size( 200, 200 ) ,
	} ,
	shape: {
		type: "poly" ,
		coords: [ 0, 0, 200, 0, 0, 200 ] ,
	} ,
} ) ;
	</script>
</body>
</html>

デモページを開く

  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2015年9月1日 (火)
コンテンツを公開しました。