地図上にマーカーを表示させる

地図上にマーカーを表示させる

 「addMarkers()」では、2種類のマーカーを生成する処理が記述されています。マーカーを地図上に表示させるためには、Markerクラスのインスタンスを作成し、引数でマーカーを表示させる座標を指定します。

marker1 = new Marker(new LatLng(35.689516,139.691857));
marker1.addEventListener(MapMouseEvent.CLICK, onMarkerClick);
googleMaps.addOverlay(marker1);

 そして、マーカーをクリックした時のCLICKイベントをリスナー登録し、addOverlay()メソッドでマーカーを配置します。

 「marker2」では、マーカーの色や大きさ、ラベルやアイコン表示などを、MarkerOptionsクラスを用いてカスタマイズしています。

marker2 = new Marker(new LatLng(35.691043,139.740826), new MarkerOptions( {
[パラメータオブジェクト]
}));

 上記のパラメータオブジェクトの部分で、strokeStyle(線)、fillStyle(塗り)、radius(大きさ)など必要な設定を記述していきます。また、それぞれのマーカーがクリックされた際には「onMarkerClick()」が実行されます。「onMarkerClick()」では、openInfoWindow()メソッドで簡単なインフォウィンドウを表示させています。

テキスト表示ができるマーカーのカスタムクラス

 さらに機能を向上させるために、Markerクラスを継承したカスタムクラスを作っていきます。

 Markerクラスを継承することで、図2-1のように既存の機能をそのまま利用でき、なおかつ自由に機能追加を行うことが可能となります。

 それでは、テキストを表示できるマーカーのカスタムクラスを作成していきます。サンプルは、会員限定特典としてダウンロードできます。記事末尾をご確認ください。サンプルファイルの構成は図2-2のような内容となっています。また、図2-3のようなコンテンツが表示されます。サンプルの処理の流れについては、図2-4に簡単にまとめてあります。

 まず最初に、「TextMarkerSample.fla」を見てください。ライブラリに「textMarkerBase」というシンボルがあります。横長の吹き出しでテキストの長さに合わせて可変するように作成し、マーカーのベースオブジェクトとして使用していきます。そして「textMarkerBase」のシンボルプロパティのリンケージで、クラス名を「textMarkerBase」、基本クラスは「flash.display.Sprite」と記述します。これで「textMarkerBase」シンボルをクラスとして扱うことができるようになります。

 次に「TextMarker.as」を見てきます。これがMarkerクラスを継承したカスタムクラス「TextMarker」となります。

 クラスを継承する際の構文は以下のように、「extends」の後に継承したいクラス名を指定します。今回はマーカーを継承していくので「extends Marker」と記述しています。

public class TextMarker extends Marker { ... }

 そして「TextMarker」クラスのコンストラクタの引数に座標とMapオブジェクトを指定しておきます。

public function TextMarker(latLng:LatLng, maps:Map) {
baseObj = new textMarkerBase();
super(latLng, new MarkerOptions( { icon : baseObj } ));

 コンストラクタ内では、まず「baseObj」変数で「textMarkerBase」クラスのインスタンスを生成します。注意点として、Markerクラスは座標の引数が必須となるため、コンストラクタ内で「super()」を実行し、最低でも座標を引数で渡し初期化を行う必要があります。

 今回のサンプルでは、「super()」の引数に座標とMarkerOptionsクラスを指定します。このMarkerOptionsクラスのiconプロパティに「baseObj」を割り当てます。これでオリジナルデザインのマーカーを表示させることができます。そのほか、情報を表示させるための「setUp()」や各種マウスイベントを記述し「TextMarker」クラスが完成になります。

 次に、ドキュメントクラス「Main.as」を見ていきます。「addMarkers()」で今回の「TextMarker」クラスのマーカー作成と配置処理を行っています。

var marker:TextMarker = new TextMarker(new LatLng(35.691143,139.740772), googleMaps);

 そして、テキストやインフォウィンドウに表示するための情報を渡していきます。

marker.titleTxt = "株式会社インプレスIT";
marker.linkList.push(["テクノロジーポータル TEDIA", "http://tedia.jp/"]);
:

 最後に、情報の表示を反映させる「setUp()」を実行しマーカーを配置させます。

marker.setUp();
googleMaps.addOverlay(marker);

 これで、カスタムクラス「TextMarker」のマーカーが地図上に表示されます。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30