地図上で検索するコードをChatGPTとCodePenで書いてみた

# はじめに
初心者の方でも簡単に試すことができる、地図表示と位置情報検索のサンプルコードを紹介します。

HERE Maps APIを使用して地図上にマーカーやポイントを表示する簡単なデモを作成したいと考えていましたが、私は開発経験がなかったため、どのように学ぶのが良いか分かりませんでした。
そんな時に、今話題のChatGPTに相談してみたところ、必要なHTML、JavaScriptコードを生成してくれ、CodePenにコピペで動作確認を繰り返し行うことで、Webブラウザーだけで開発することができました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/5cf9e2d7-bf19-0ab2-68cd-f238137aa586.png" width=80%>

HEREとCodePenアカウントがあればどなたでもお試しできますので、お気軽にご活用、フィードバックください。

# 事前に必要なもの
- CodePen　アカウント　https://codepen.io/　
ブラウザ上でJavaScriptの開発をできるサービスで、リアルタイムで表示を確認しながら開発をすることができるサービスです。
1.　CodePenのウェブサイトにアクセスします。
2.　アカウントがなければ新規登録を、すでにアカウントを持っていればログインを行います。
3.　ホームページで'Pen'を作成するために、右上角の"Start Coding"または'+ New Pen'をクリックで準備完了。
下記の投稿を参考にさせていただきました。

https://qiita.com/fumu238/items/f73274aa1a188eb15794

- HERE APIキー https://developer.here.com/
1.　HERE platform にサインインします。
2.　ランチャから [アクセスマネージャ]を開きます。
3.　[ アプリ ] タブで、手順 1 で作成したアプリ、または API キー を生成する既存のアプリをクリックします。
4.　資格情報 タブで 、 API Keys を選択 し、 Create API キー をクリックします。 アプリには、最大 2 つの API キーを生成できます。 API キー が作成され、表示されます。
HEREアカウントをお持ちではない方は、下記の手順を参考にしてください。

https://qiita.com/kekomat/items/d2e29bac84a27c1ec521

# ChatGPTとCodePenでの開発
ChatGPTは、下記のプロンプトで作成をスタートしました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/162a0570-9519-5136-6726-717f511ee2ea.png" width=80%>

基本、ChatGPTが生成したコードを、CodePenのHTML、JSのウィンドウにコピペして、API Keyを入れるだけです。

一点、
コピペ前に、CodePen のツールバー歯車マーク　　Settings
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/7c4d7c0e-c7ee-8af6-77b9-f35ba11770be.png" width=30%>　
の中のJSに
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/cd95d422-a5e2-ee9d-5ce5-ca14c4850a6e.png" width=80%>
下記URLを追加してください。
- https://js.api.here.com/v3/3.1/mapsjs-core.js
- https://js.api.here.com/v3/3.1/mapsjs-service.js
- https://js.api.here.com/v3/3.1/mapsjs-ui.js
- https://js.api.here.com/v3/3.1/mapsjs-mapevents.js

その後、続いて
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/8a542a59-b43f-46a8-3a33-109b40908295.png" width=80%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725955/4229dc73-0b33-96c3-dc50-3f8ba1aac6e2.png" width=80%>
のような感じで、
ChatGPTに機能追加を相談しながら生成されたコードをCodePenにコピペし、意図通りに動かなかったりエラーが出るたびに、ChatGPTにコードレビューを依頼し修正していきます。

# 出来上がったサンプルコード

<p class="codepen" data-height="300" data-default-tab="js,result" data-slug-hash="ExOERRe" data-user="kekomat" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/kekomat/pen/ExOERRe">
  Untitled</a> by Kenji Komatsu (<a href="https://codepen.io/kekomat">@kekomat</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

# サンプルコードで出来ること
HERE MapsのAPIを使用して地図と位置情報検索機能を提供します。

1. HERE APIキーの設定:
   - ページを読み込むと、ローカルストレージから以前に保存されたAPIキーが取得されます。
   - 保存されたAPIキーが存在する場合は、`initializeMap()`関数が呼び出され、マップが初期化されます。
   - 保存されたAPIキーが存在しない場合は、アラートメッセージが表示されます。
   - `set-button`ボタンをクリックして、APIキーを入力し保存することもできます。

2. マップの表示:
   - マップが初期化されると、指定されたAPIキーを使用して地図が表示されます。
   - マップは`mapContainer`というIDを持つHTML要素に表示されます。

3. マップ上での操作:
   - マップ上をクリックすると、その場所にマーカーが追加されます。
   - クリックされた位置の近くにある位置情報（POI）を検索し、結果を表示します。
   - マップ上の検索ボックスに住所や場所名を入力し、検索ボタンをクリックすると、入力された場所を検索し、その位置にマーカーが追加されます。

4. 緯度と経度による検索:
   - `lat-box`と`lng-box`というIDを持つ入力ボックスに緯度と経度を入力し、`latlng-search-button`ボタンをクリックすると、入力された位置にマーカーが追加されます。

# まとめ
この記事を通じて、開発経験のない方でも、ChatGPTとCodePenを利用して地図表示と位置情報検索を実現する方法を学ぶことができます。簡単なスクリプトでツッコミどころ満点ですが、すぐに使えますので初心者の方でもぜひお試しいただきたいと思います。

# 参考情報
ChatGPTが昔の情報を元にコードを生成するケースがあります。
最新のHERE技術情報、特に移行ガイドを参照するようプロンプトで指示することで解決することがありました。

- [HERE Maps API for JavaScript サンプル](https://jp.developer.here.com/documentation/examples/maps-js)
- [HERE Vector Tile API サンプル](https://developer.here.com/documentation/vector-tiles-api/dev_guide/topics/examples/jsla.html
)
- [HERE Geocoding & Search API v7 移行ガイド](https://jp.developer.here.com/documentation/geocoding-search-api/migration_guide/index.html)

HERE開発者ガイドは、日本語機械翻訳もありますが、念の為英語版を参照させたほうが良い気がします。

https://jp.developer.here.com/documentation/maps/3.1.42.1/dev_guide/topics/get-started-japan.html