SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

OpenLaszlo(オープンラズロ)をはじめよう

OpenLaszloでGoogleマップを使う

第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

情報ウインドウを表示する

 情報ウインドウを使うことで地点名などを表示することができます。地図上に情報ウインドウを表示するには、MapクラスのopenInfoWindowメソッドを実行します。map.lzxに[情報ウインドウを表示]ボタンを追加し、gmap.lzxにopenInfoWindowメソッドを追加します。

サンプルソース(map.lzx)
<?xml version="1.0" encoding="UTF-8"?>
<canvas width ="468"
        height="530"
        debug ="false">

  <!-- gmap.lzxのインクルード -->
  <include href="./gmap.lzx"/>

  <!-- Googleマップを表示するビュー -->
  <view id="GMapView" x ="10" y ="30" options="ignorelayout">

    <attribute name="_gmap" type="expression" value="null"/>

    <handler name="oninit">
    <![CDATA[
      this._gmap = new GMap();
      //viewにMapsを子として追加する
      this.sprite.addChildAt(this._gmap.map, this.sprite.numChildren);
    ]]>
    </handler>

  </view>

  <button>地図を移動
    <handler name="onclick">
    <![CDATA[
      GMapView._gmap.centerAndZoom(32.791771, 129.864093, 16);
    ]]>
    </handler>
  </button>

  <button>マーカーを表示
    <handler name="onclick">
    <![CDATA[
      GMapView._gmap.addMarker(32.791771, 129.864093);
    ]]>
    </handler>
  </button>
  
  <button>情報ウインドウを表示
<handler name="onclick">
<![CDATA[
GMapView._gmap.openInfoWindow(32.791771,
129.864093,
'株式会社ドゥアイネット',
'長崎市花丘町12番16号小笹ビル2F');
]]>
</handler>
</button>
<simplelayout axis="x" spacing="5" inset="10"/> </canvas>
サンプルソース(gmap.lzx)
<?xml version="1.0" encoding="UTF-8"?>
<library>

<script when="immediate"><![CDATA[

public final class GMap {

#passthrough (toplevel: true) {
  //Google Maps APIライブラリをインポートする
  import com.google.maps.*;
  import com.google.maps.controls.*;
  import com.google.maps.overlays.*;
  import com.google.maps.styles.*;
  import flash.geom.*;
}#

  //Google Maps APIキー
  private const KEY = '発行されたAPIキーをここに記入してください。';

  private var _map:Map;

  public function GMap() {
    super();
    this._map = new Map();
    this._map.key = KEY; //Google Maps APIキーをセットする
    this._map.setSize(new Point(450, 340)); //Google Mapsのサイズを設定
  }

#passthrough {
  //Mapオブジェクトのゲッター
  public function get map() {
    return this._map;
  }
}#

  //地図を指定した位置を中心に移動させる
  public function centerAndZoom(lat:Number, lon:Number, zoom:Number):void {
    this._map.setCenter(new LatLng(lat, lon), zoom, MapType.NORMAL_MAP_TYPE);
  }

  //地図にマーカーを表示する
  public function addMarker(lat:Number, lon:Number):void {
    var mk:Marker = new Marker(new LatLng(lat, lon));
    this._map.addOverlay(mk);
  }
  
  //地図に情報ウインドウを追加する
public function openInfoWindow(lat:Number, lon:Number, title:String, content:String):void {
this._map.openInfoWindow(new LatLng(lat, lon),
new InfoWindowOptions({title: title, content: content}));
}
} ]]></script> </library>
サンプルソースを実行した結果
サンプルソースを実行した結果

マウスを移動したときのイベント取得

 地図上のイベントを取得するには、Mapクラスのイベントリスナーを作成します。マウスを移動したときのイベントは、 MapMouseEvent.MOUSE_MOVEです。イベントハンドラの引数で、マウス位置の緯度、経度を取得できます。

 map.lzxに、viewの初期化イベントでイベントリスナーを作成するコードと、マウス位置の緯度、経度を表示するtextタグを追加します。

サンプルソース(map.lzx)
<?xml version="1.0" encoding="UTF-8"?>
<canvas width ="468"
        height="530"
        debug ="false">

  <!-- gmap.lzxのインクルード -->
  <include href="./gmap.lzx"/>

  <!-- Googleマップを表示するビュー -->
  <view id="GMapView" x ="10" y ="30" options="ignorelayout">
    
      <passthrough>
<!-- Google Maps APIライブラリをインポートする -->
import com.google.maps.*;
</passthrough>
<attribute name="_gmap" type="expression" value="null"/> <handler name="oninit"> <![CDATA[ this._gmap = new GMap(); //viewにMapsを子として追加する this.sprite.addChildAt(this._gmap.map, this.sprite.numChildren); //マウスが移動したときのイベントリスナーの作成
this._gmap.map.addEventListener(MapMouseEvent.MOUSE_MOVE,
function(event:MapMouseEvent) {
txtLat.setAttribute('text', '経度:' + event.latLng.lat());
txtLng.setAttribute('text', '緯度:' + event.latLng.lng());
}
);
]]> </handler> </view> <text id ="txtLat"
x ="10"
y ="370"
resize ="true"
options="ignorelayout"/>

<text id ="txtLng"
x ="180"
y ="370"
resize ="true"
options="ignorelayout"/>
<button>地図を移動 <handler name="onclick"> <![CDATA[ GMapView._gmap.centerAndZoom(32.791771, 129.864093, 16); ]]> </handler> </button> <button>マーカーを表示 <handler name="onclick"> <![CDATA[ GMapView._gmap.addMarker(32.791771, 129.864093); ]]> </handler> </button> <button>情報ウインドウを表示 <handler name="onclick"> <![CDATA[ GMapView._gmap.openInfoWindow(32.791771, 129.864093, '株式会社ドゥアイネット', '長崎市花丘町12番16号小笹ビル2F'); ]]> </handler> </button> <simplelayout axis="x" spacing="5" inset="10"/> </canvas>
サンプルソースを実行した結果
サンプルソースを実行した結果

次のページ
住所から緯度、経度を取得する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
OpenLaszlo(オープンラズロ)をはじめよう連載記事一覧

もっと読む

この記事の著者

株式会社ドゥアイネット 前田慎治(マエダシンジ)

株式会社ドゥアイネットに勤務するプログラマーです。制御系から事務系まで様々な開発を経験し、現在はCurlやOpenLaszloを使ってRIAの開発を担当しています。OpenLaszloで開発した「スマートスケジューラー」http://www.dinss.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4233 2009/08/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング