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']
}
})
}


Vue CLIでGA4を導入する方法
アイコンフォントをPCにインストールしている場合は、コーディング後の確認に注意
WordPressで「予約投稿の失敗」となってしまう場合の対処方法
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
gulp-plumberとgulp-notifyでgulpエラー時にデスクトップで通知がくるようにする
Visual Studio Codeで英単語のスペルチェックをしてくれる拡張機能「Code Spell Checker」
HTMLが書ければすぐ習得できるテンプレートエンジン「EJS」の基本的な書き方
WordPressのデータを取得できるWP REST APIの使い方
Visual Studio Codeのファイル横に表示されるファイルアイコンのテーマまとめ
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Magic Mouseの軌跡の速さを限界を超えて速くする方法
Keyboard Maestroの「Prompt for User Input」でユーザーの入力に応じて変化するマクロを作成する方法
Google関連サービスをすばやく確実に変換するための単語登録サンプル
Vue.jsのv-forで生成した要素をクリックするたびに、classをトグルで付け外しする方法
Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える
JavaScriptのテンプレートリテラル内で条件分岐を行う方法
Transmitで特定拡張子のファイルを開くアプリケーションを指定する方法
Sketchの画像周りの基本操作|画像の追加方法や色補正、切り抜き方法まで
IllustratorとPhotoshopとXDのツール系のショートカットキーを統一させる
Macの「コマンド」キーの表記は「command」と「Command」のどちらが正しいのか