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


npm install時に「cb() never called!」とエラーが表示されたときの解決法
既存プロジェクトにCompassが導入されている場合に備えて、最低限Sassのコンパイルだけでも行えるようにしておく
Visual Studio Codeで連番を入力する拡張機能「vscode-input-sequence」
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
Dart Sassを使う上で1番基本的なネストやアンパサンドの書き方|Dart Sass入門
Visual Studio CodeでMovable TypeのMTMLファイルを開く拡張機能「Movable Type Markup Language Syntax」
Visual Studio Codeで英単語のスペルチェックをしてくれる拡張機能「Code Spell Checker」
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
ATOKのキーワードチャージで、よく見るサイトで使われている単語を学習させる方法
iOS Safariで文章の最後の1文字だけ改行されてしまう現象の対処法
220以上の有料Macアプリが使えるサブスクサービス「Setapp」
選択オブジェクトに合わせてアートボードを変更するillustratorのスクリプト
Macのちょっとした設定をメニューバーから変更できる「One Switch」
いつも使っているアプリがタブに埋もれるのを防止するアプリ「Biscuit(ビスケット)」
Google Chromeのブックマークバーを「新しいタブ」でも非表示にしたい
Figmaで企業やサービスのブランドロゴやカラーをすぐ参照できるプラグイン「Brandfetch」
iPhoneのスクリーンショットをIllustratorにペーストすると、色がおかしくなってしまう現象の解決方法
常時SSL化の設定をしたのに「保護された通信」が表示されない時はパスにHTTPが残っているのかも?