GALAXY S でAIRなマップ表示
ちょっとひまだったので、Map表示の際、GPSを使って現在位置を表示してみました。
っといっても自分の環境はwifiなので実際にGPSは試してませんので、不具合ある場合は教えて欲しいです。
ソースはこちら
<?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="Home"> <fx:Script> <![CDATA[ //GoogleMap import com.google.maps.Map; import com.google.maps.LatLng; import com.google.maps.MapEvent; import com.google.maps.MapType; import com.google.maps.controls.MapTypeControl; import com.google.maps.controls.ZoomControl; import com.google.maps.controls.PositionControl; protected function onMapReady(e:MapEvent ):void { map.setZoom(14); map.setCenter(new LatLng(35.698467,139.772787), 11, MapType.NORMAL_MAP_TYPE); map.addControl(new ZoomControl()); map.addControl(new PositionControl()); map.addControl(new MapTypeControl()); startGps(); } //GPS import flash.events.GeolocationEvent; import flash.sensors.Geolocation; import mx.events.FlexEvent; protected var geoLocation:Geolocation; protected function startGps():void { if (Geolocation.isSupported) { var g:Geolocation = new Geolocation(); if (g.muted) { log.appendText("Access to GPS has been muted"); return; } log.text = "Loading..."; g.setRequestedUpdateInterval(100); g.addEventListener(GeolocationEvent.UPDATE, onUpdate); addEventListener(FlexEvent.REMOVING,onRemove); } else { log.text = "gps not support"; } } protected function onUpdate(event:GeolocationEvent):void { log.text = "onUpdate"; map.setCenter(new LatLng( event.latitude , event.longitude ) ); } protected function onRemove(event:FlexEvent):void { log.text = "onRemove"; geoLocation.removeEventListener(GeolocationEvent.UPDATE, onUpdate); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:TextArea id="log"/> <maps:Map xmlns:maps="com.google.maps.*" id="map" url="YOUR_URL" sensor="true" mapevent_mapready="onMapReady(event)" width="100%" height="100%" key="API_KEY"/> </s:View>