Google Maps API for Flash で地図を作る + マーカーを付ける、にカスタムマーカーを設置してみました。
イラストレータで作成したパーキングマークをグラフィックシンボルに変換し更にMovieClip
, ParkingMCにしました。
リンケージ設定しクラスをParkingMC
にしています。
このParkingMC
をGoogle Mapのマーカーで使うにはMarkerOptions
のicon
プロパティに設定すると実現できました。
import com.google.maps.LatLng; import com.google.maps.Map; import com.google.maps.MapEvent; import com.google.maps.MapType; import com.google.maps.Color; import com.google.maps.MapMouseEvent; import com.google.maps.InfoWindowOptions; import com.google.maps.controls.*; import com.google.maps.styles.*; import com.google.maps.overlays.*; import com.hydrotik.go.*; HydroTween.VERBOSE = false; // start create map var map:Map = new Map(); // set Google Map API key map.key = "YOUR KEY"; // Map size map.setSize(new Point(stage.stageWidth, stage.stageHeight - 30)); // Map position map.y = 30; // hyde map map.alpha = 0; // set MAP_READY handler map.addEventListener(MapEvent.MAP_READY, onMapReady); // set language -- defalut is English map.language = "ja"; // set Maptype Control map.addControl(new MapTypeControl()); // set Navigation Control -- zoom / move map.addControl(new NavigationControl()); // Overview Control style var cpOption:Object = { controlStyle:{bevelStyle: BevelStyle.BEVEL_NONE,strokeStyle: {color: Color.GRAY10,alpha: 1.0,thickness: 1.0}} ,padding:{x:0,y:0} ,position: new ControlPosition(ControlPosition.ANCHOR_BOTTOM_RIGHT) ,size: {x: 100*stage.stageWidth/stage.stageHeight,y: 100} }; // set Overview Control map.addControl(new OverviewMapControl(new OverviewMapControlOptions(cpOption))); // display this.addChild(map); // method of MAP_READY handler function onMapReady(event:Event):void { map.removeEventListener(MapEvent.MAP_READY, onMapReady); // Lat_Lng var latLng:LatLng = new LatLng(33.59013936225428,130.40021051520534); // Parking Marker var makaerParkingOptions:MarkerOptions = new MarkerOptions({ icon : new ParkingMC() ,iconAlignment : MarkerOptions.ALIGN_LEFT + MarkerOptions.ALIGN_TOP ,tooltip: "駐車場" ,hasShadow: true }); // Marker Parking var markerParking:Marker = new Marker(new LatLng(33.589710370926205, 130.37892450446316), makaerParkingOptions); // Marker parking on map.addOverlay(markerParking); // Marker option var markerOptions:MarkerOptions = new MarkerOptions({ strokeStyle: { thickness: 1.6, alpha: 1, color:0xff00ee }, fillStyle: { color: 0x174baa, alpha: 0.9 }, labelFormat: { font: "_sans", size: 10, color: 0xe1f1cb, align: TextFormatAlign.CENTER }, gravity: 0.6, radius: 14, hasShadow: true, draggable: true, tooltip: "マーカーをドラッグ", label:"天神" }); // Marker var marker:Marker = new Marker(latLng, markerOptions); // Marker on map.addOverlay(marker); // show map map.setCenter(latLng, 14, MapType.NORMAL_MAP_TYPE); // show lat lng textField showLatLng(latLng.toString()); // show 緯度経度 HydroTween.go(map,{alpha:1},1.5); // show map HydroTween.go(LatLng_mc,{alpha:1},2); // marker drag event marker.addEventListener(MapMouseEvent.DRAG_END,dragEndHandler); // click on the map map.addEventListener(MapMouseEvent.CLICK,cliclHandler); } // show textField function showLatLng (s:String):void{ latLng_txt.text = s; } // drag end handler function dragEndHandler (e:MapMouseEvent):void { showLatLng(format(e.latLng.toString())); } function format (s:String):String { return s.substring(1, s.length - 1); } // click handler function cliclHandler (e:MapMouseEvent):void { var geo:String = format(e.latLng.toString()); var options:Object = { title : "Lat_Lng" ,content : geo } var infoOptions:InfoWindowOptions = new InfoWindowOptions(options); map.openInfoWindow(e.latLng,infoOptions); showLatLng(geo); } |
マーカーは地図を拡大縮小してもそのままのサイズなので、ズーム・イン、アウトのタイミングで拡大縮小した方が良いかもしれません。
地図の拡大縮小はMapZoomEvent.ZOOM_CHANGED
をリスナーすることで取得することができます。
マーカーの拡大縮小はできても影を拡大縮小する方法が分かりませんでした。
どうするんだろう…