まずは3章のサンプルコードを見てみよう。
1: package {
2: import com.google.maps.Map;
3: import com.google.maps.MapEvent;
4: import com.google.maps.MapType;
5: import com.google.maps.LatLng;
6: import com.google.maps.controls.*;
7:
8: public class HelloWorld extends Map
9: {
10: public function HelloWorld()
11: {
12: super();
13: addEventListener(MapEvent.MAP_READY, onMapReady);
14: }
15:
16: private function onMapReady(event:MapEvent):void
17: {
18: var zoomOptions:ZoomControlOptions = new ZoomControlOptions(
19: { hasScrollTrack:false }
20: );
21: setCenter(new LatLng(43.073,141.33), 10, MapType.NORMAL_MAP_TYPE);
22: addControl( new PositionControl() );
23: addControl( new ZoomControl(zoomOptions) );
24: }
25: }
26: }
Google のサンプルコードと異なるのは主に2カ所。 まず1行目の package 宣言
1: package {
Google 様のコードではパッケージ名が指定してある。
package com.google.maps.examples {
Actionscript言語では、パッケージ名とフォルダ構造を同一にするというルールがあるので、Google コードの様にパッケージ名を付けてしまうと、"HelloWorld.as"は、必ず"com/google/maps/example/"というフォルダの中に置かなければならなくなってしまう。今回のサンプルは可搬性の向上を目的としたいので、あえてパッケージ名を無くした(文法上は問題ない)。これにより、"HelloWorld" フォルダをどこに移動させても、make 一発でコンパイルが出来るようになっている。
次に "onMapReady" 関数の中身。
"onMapReady"は "MAP_READY" イベントが発生すると呼ばれる。このイベントは Google 側が用意した初期化処理の終了直後に発生する事になっているので、自前のパーツやイベントの初期化はこのイベント後に行う必要がある。
18: var zoomOptions:ZoomControlOptions = new ZoomControlOptions(
19: { hasScrollTrack:false }
20: );
21: setCenter(new LatLng(43.073,141.33), 10, MapType.NORMAL_MAP_TYPE);
22: addControl( new PositionControl() );
23: addControl( new ZoomControl(zoomOptions) );
Google 様のコードでは setCenter の1行だけ。setCenter(new LatLng(40.736072,-73.992062), 14, MapType.NORMAL_MAP_TYPE);Flash 版の地図を操作してみると左右ダブルクリックでのズームが効かない。これは Flash の右クリックがコンテキストメニューに割り当てられてしまっているからだろう。
このため、Google のサンプルでは、平行移動しか出来なくなっていて面白みが半減している。そこで本サンプルではズームと平行移動のボタンを追加した。
標準のコントロールは Google によってクラスが用意されているので、単にコントロールを初期化して、マップのインスタンスメソッド "addControl(control:Control)" に渡すだけで良い。
ただ、標準のズームコントロールはスライドバーがついており小さなマップだとはみ出してしまうので、オプションでスライドバーをオフにしてある(18〜20行目)。
|
|
|
ここからは Flash の機能を活用して、Ajax 版では出来なかったリッチなコンテンツを紹介したいが、気力が尽きたので先ずはここまで。
|
|
0 | 1 | 2 | 3 | 4 | 5 |
|