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

Polygon: paths

pathsはPolygonクラスのオプションです。ポリゴンの各角となる位置座標を指定できます。

MVCArray<MVCArray<LatLng>> | MVCArray<LatLng> | Array<Array<LatLng | LatLngLiteral>> | Array<LatLng | LatLngLiteral>

JavaScriptのネイティブな配列、またはGoogle Maps独自のMVCArrayで、位置座標を任意の数だけ指定する。

配列は、一次元配列、または二次元配列で指定できる。一次元配列の場合、1つのインスタンスでポリゴンは1つ。二次元配列の場合は、1つのインスタンスで任意の数だけポリゴンを作成できる。

var opts = {
	paths: [	// 二次元配列で指定する例
		// 1つ目のポリゴン
		[
			new google.maps.LatLng( 35.71130001178331 , 139.80993825263977 ) ,
			new google.maps.LatLng( 35.71065535994499 , 139.8088117248535 ) ,
			new google.maps.LatLng( 35.709174383271474 , 139.8088439113617 ) ,
			new google.maps.LatLng( 35.70886947289342 , 139.8107751018524 ) ,
			new google.maps.LatLng( 35.710097819014884 , 139.81207329101562 ) ,
			new google.maps.LatLng( 35.70939217568423 , 139.81357532806396 ) ,
			new google.maps.LatLng( 35.711639758625964 , 139.8128994113922 ) ,
			new google.maps.LatLng( 35.71099510953576 , 139.81208401985168 ) ,
		] ,
		// 2つ目のポリゴン
		[
			new google.maps.LatLng( 35.7147651, 139.79665529999997 ) ,
			new google.maps.LatLng( 35.71525291995882, 139.7858406332519 ) ,
			new google.maps.LatLng( 35.72277890657972, 139.79227793488764 ) ,
		] ,
	] ,
} ;

デモ

pathsを指定したデモです。

一次元配列

1つのインスタンスで1つのポリゴンがレンダリングされます。

var polygon = new google.maps.Polygon( {
	map: map ,
	paths: [
		new google.maps.LatLng( 35.7113 , 139.8099 ) ,
		new google.maps.LatLng( 35.7106 , 139.8088 ) ,
		new google.maps.LatLng( 35.7091 , 139.8088 ) ,
		new google.maps.LatLng( 35.7088 , 139.8107 ) ,
		new google.maps.LatLng( 35.7100 , 139.8120 ) ,
		new google.maps.LatLng( 35.7093 , 139.8135 ) ,
		new google.maps.LatLng( 35.7116 , 139.8128 ) ,
		new google.maps.LatLng( 35.7109 , 139.8120 ) ,
	] ,
} ) ;

二次元配列

一次元配列を任意の数だけ含むのが二次元配列です。1つのインスタンスで複数のポリゴンを管理できます。これは2つの一次元配列を含めた例です。くどいですが、これらは2つの、別々のインスタンスではなく、1つのインスタンスだというのがポイントです。

var polygon = new google.maps.Polygon( {
	map: map ,
	paths: [
		// 1つ目の一次元配列
		[
			new google.maps.LatLng( 35.7113 , 139.8099 ) ,
			new google.maps.LatLng( 35.7106 , 139.8088 ) ,
			new google.maps.LatLng( 35.7091 , 139.8088 ) ,
			new google.maps.LatLng( 35.7088 , 139.8107 ) ,
			new google.maps.LatLng( 35.7100 , 139.8120 ) ,
			new google.maps.LatLng( 35.7093 , 139.8135 ) ,
			new google.maps.LatLng( 35.7116 , 139.8128 ) ,
			new google.maps.LatLng( 35.7109 , 139.8120 ) ,
		] ,
		// 2つ目の一次元配列
		[
			new google.maps.LatLng( 35.7147651, 139.79665529999997 ) ,
			new google.maps.LatLng( 35.71525291995882, 139.7858406332519 ) ,
			new google.maps.LatLng( 35.72277890657972, 139.79227793488764 ) ,
		] ,
	] ,
} ) ;

サンプルコード

<!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: 15 ,
} ) ;

// Polygon
var polygon = new google.maps.Polygon( {
	map: map ,
	paths: [
		// 1つ目の一次元配列
		[
			new google.maps.LatLng( 35.7113 , 139.8099 ) ,
			new google.maps.LatLng( 35.7106 , 139.8088 ) ,
			new google.maps.LatLng( 35.7091 , 139.8088 ) ,
			new google.maps.LatLng( 35.7088 , 139.8107 ) ,
			new google.maps.LatLng( 35.7100 , 139.8120 ) ,
			new google.maps.LatLng( 35.7093 , 139.8135 ) ,
			new google.maps.LatLng( 35.7116 , 139.8128 ) ,
			new google.maps.LatLng( 35.7109 , 139.8120 ) ,
		] ,
		// 2つ目の一次元配列
		[
			new google.maps.LatLng( 35.7147651, 139.79665529999997 ) ,
			new google.maps.LatLng( 35.71525291995882, 139.7858406332519 ) ,
			new google.maps.LatLng( 35.72277890657972, 139.79227793488764 ) ,
		] ,
	] ,
} ) ;

// fit bounds
var LatLngBounds = new google.maps.LatLngBounds() ;

polygon.getPaths().forEach( function ( LatLngs ) {
	LatLngs.forEach( function ( LatLng ) {
		LatLngBounds.extend( LatLng ) ;
	} ) ;
} ) ;

map.fitBounds( LatLngBounds ) ;
	</script>
</body>
</html>

デモページを開く

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