Google Maps API V3 で、地図上にオリジナルのMarkerアイコンを追加してみました。
Reference
Google公式のリファレンスを参考にしました。
- 参考:Google Maps Javascript API V3 Reference
- Google Maps JavaScript API V3 は IE6 サポート対象外 なのでお気をつけ下さい。
Markerアイコンを追加する
表示した地図にオリジナルのMarkerアイコンを追加してみました。
1. Mapクラスを生成
MapOptionsオブジェクトの設定して、Mapクラスの引数に指定します。
var op={
zoom:15,
center:new google.maps.LatLng(35.507456,139.617585),
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("map_canvas"),op);
2. MarkerImageオブジェクトの設定
Markerアイコンを追加するために、前面のアイコンと影の画像を設定するための MarkerImageオブジェクトを生成します。
影の画像は Shadowmaker で作る事ができます。
以下のサイトで Start Shadowmaker をクリックして、Image から用意したアイコンを選択したら Make shadow をクリックして、生成された影の画像をダウンロードしてください。
- Shadowmaker:http://www.cycloloco.com/shadowmaker/
![]() |
|
MarkerImageオブジェクトの設定は(画像のURL、画像のサイズ、画像のposition、画像のアンカーの位置、画像全体の拡大/縮小サイズ)を指定します。画像全体の拡大/縮小サイズは、オプションなのでとりあえず省略します。
また、Shadowmaker で出力されたアンカー位置の値は画像の中心になっているので、今回のようにマーカー画像が旗の形になっている場合ではアンカーの位置が左下 (0, 64.0) になるように修正を加えます。
var image=new google.maps.MarkerImage( "marker.png", //画像のURL new google.maps.Size(48.0,64.0), //画像のサイズ new google.maps.Point(0,0), //画像のposition new google.maps.Point(0,64.0) //画像のアンカーの位置 ); var shadow=new google.maps.MarkerImage( "shadow.png", //影の画像のURL new google.maps.Size(81.0,64.0), //影の画像のサイズ new google.maps.Point(0,0), //影の画像のposition new google.maps.Point(0,64.0) //影の画像のアンカーの位置 );
3. MarkerOptionsオブジェクトの設定
MarkerOptionsオブジェクトの設定をします。
MarkerOptionsオブジェクトの基本的な設定は、position、map を指定します。
更に、オリジナルのMarkerアイコンを追加するためには、生成したMarkerImageオブジェクトを icon と shadow に指定します。
icon を省略すると、デフォルトのマーカーアイコンになります。
var obj={
position:new google.maps.LatLng(35.507456,139.617585),
map:map,
icon:image,
shadow:shadow
};
position(マーカーの位置)map(マーカーを表示する地図)icon(前面のアイコン)shadow(影の画像)
他にも、マーカードラッグの指定、ロールオーバー テキストの設定などがあります。
draggable(true の場合マーカーをドラッグすることができます)title(ロールオーバー テキスト)
4. Markerクラスを生成
Markerクラスを生成して、MarkerOptionsオブジェクトを引数に指定します。
<html lang="ja">
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script>
<script type="text/javascript">
// <![CDATA[
window.onload=function(){
var op={
zoom:15,
center:new google.maps.LatLng(35.507456,139.617585),
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("map_canvas"),op);
var image=new google.maps.MarkerImage(
"marker.png",
new google.maps.Size(48.0,64.0),
new google.maps.Point(0,0),
new google.maps.Point(0,64.0)
);
var shadow=new google.maps.MarkerImage(
"shadow.png",
new google.maps.Size(81.0,64.0),
new google.maps.Point(0,0),
new google.maps.Point(0,64.0)
);
var obj={
position:new google.maps.LatLng(35.507456,139.617585),
map:map,
icon:image,
shadow:shadow
};
var marker=new google.maps.Marker(obj);
}
// ]]>
</script>
</head>
<body>
<div id="map_canvas" style="width:550px;height:400px"></div>
</body>
サンプル
- Example:gmap-simple-2.html
以上、こんな感じでした。
