Google Maps APIでピンの見た目をカスタマイズする方法

Google Maps APIを使う1番のメリット(理由)はオリジナルのピンを設置できることです。
「オリジナルのピンを設定する方法を調べてみたらGoogle Maps APIっていうのを使わないといけないらしい」となって使う人も多いのでは無いでしょうか?
今回はそんなオリジナルのピンの設定方法についてまとめておきます。
Google Maps APIの設定
Google Maps APIの初期設定については過去に記事にしてあるのでそちらをご覧ください。
まずは下記の基本のコードでGoogle Maps APIでマップを表示させます。
<div id="map"></div>
<script>
initMap();
function initMap() {
let map = new google.maps.Map(document.getElementById('map'), {
center: {lat: - 35.681382, lng: 139.766083},
zoom: 8
});
}
</script>ピンの追加
ピンの追加の仕組み
ピンを追加するときはnew google.maps.Markerを使って、オプションとして下記の情報を設定します。
| オプション名 | 内容 |
|---|---|
| map | 反映するGoogle Maps(new google.maps.Map)を指定 |
| position | ピンを設置するポジション(new google.maps.LatLng)を指定 |
| icon | ピンの設定をオブジェクト形式で、アイコンURLやサイズを指定 |
icon のプロパティ
「icon」のプロパティでは、さらにアイコンの細かい情報を入力します。
| プロパティ名 | 内容 |
|---|---|
| url | アイコンのURLパスを指定 |
| size | アイコンの表示する部分のサイズ(new google.maps.Size)を指定 |
| scaleSize | 画像の表示サイズを指定 |
| anchor | 画像の支点を指定 |
| labelOrigin | ラベルを付ける場合のラベルの支点を指定 |
| origin | anchorやsizeの支点を指定 |
実際のコード
ピンを1つ追加する
先ほど紹介したオプションを使って最低限アイコンを表示させたい場合は、下記のようなコードになります。
function initMap() {
let map = new google.maps.Map(document.getElementById('map'), {
center: {lat: - 35.681382, lng: 139.766083},
zoom: 8
});
//マーカーの追加
let marker = new google.maps.Marker({
position: {lat: - 35.681382, lng: 139.766083}, // ピンの緯度・経度
map: map, // 追加するGoogle Mapsを指定
icon: {
url: './images/pin.png' // ピンの画像パスを指定
}
});
}これでマーカーの追加ができます。
ピンを複数追加する
ピンを複数追加したい場合は、ピンの情報を下記のように管理して、for文でピンの追加をするようにすると管理がラクになります。
markers = [
{
lat: - 35.681382,
lng: 139.766083,
icon: './images/pin_1.png'
},
{
lat: - 35.681482,
lng: 139.766183,
icon: './images/pin_2.png'
},
{
lat: - 35.681282,
lng: 139.766043,
icon: './images/pin_3.png'
},
];for (let i = 0; i < markers.length; i++) {
let markerPosition = new google.maps.LatLng({lat: markers[i]['lat'], lng: markers[i]['lng']})
let marker = new google.maps.Marker({
position: markerPosition,
map: map,
icon: {
url: markers[i]['icon']
}
})
}


超軽量なコードエディタ 「Zed」をサブエディタとして活用する
JavaScriptで配列内から特定条件の要素を探す方法
Vue CLIでGA4を導入する方法
SourceTreeのカスタムアクションを使って差分ファイルだけをまとめる方法
スライドを簡単に実装できるJavaScriptライブラリ「Swiper」
Nuxt.jsでaxios-moduleを使ってAPIからデータを取得・表示する|Nuxt.jsの基本
Google Maps APIでピンのアクティブ時にピン画像を変える方法
SourceTreeでBacklogのGitを使うときに、権限エラーになってしまう場合の解決法
アクセス解析ツールの定番!!Googleアナリティクスの登録方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
macのFinderで不可視ファイルを見れるようにする幾つかの方法
ATOKの「連想変換」で似た意味の別表現に変換して自分の文章に磨きをかける
Movable Typeでコメントアウトして出力時に無視する方法
Alfredでダークモードを切り替えるWorkflowを作成する方法
メニューバーアイコン管理の鉄板ツール「Bartender 4」で使用頻度の高いアプリだけメニューバーに表示させる
Macのアプリケーションやウインドウの切り替えまとめ
CSS Nite in Kobe, vol.51「すべての人がカメラを持つ時代の SNS映え・ウェブ映えする写真撮影テクニック と 写真撮影の基礎」に参加してきました
Path Finder 8から大幅に強化されたモジュール機能の設定方法
Evernoteで特定のタグを除外して検索する方法
Google Chromeのブックマークを綺麗に整理するコツ