読者です 読者をやめる 読者になる 読者になる

GALAXY S でAIRなマップ表示

AIR Android

ちょっとひまだったので、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>

参考リンク
Google Maps API for Flash がAIRに対応 - adakoda