カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

グーグルマップに移動した軌跡を表示する [Android]

グーグルマップに現在地を表示し、移動した軌跡を線で描画してみたいと思います。
描画の度にオーバーレイを重ねていくと、当然のことながら重たくなっていくので、
表示するオーバーレイは常に1枚、ルート情報はpathRouteに記憶させるようにしました。
ルート情報が増える毎にオーバーレイを書き直しています。

まずは、LocationListenerを実装し、MapActivityクラス継承したクラスを作成します。

public class MyMap extends MapActivity implements LocationListener {

    private MapView mMapView;
    private MapController mMapController;
    private MyLocationOverlay mOverlay;
    private LocationManager mLocationManager;
    private LineOverlay lineOverlay = new LineOverlay(); //軌跡を描画するオーバーレイ

    public static List<GeoPoint> pathRoute; //ルート情報

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        mMapView = (MapView)findViewById(R.id.mapview);
        mMapView.setClickable(true);

        mMapController = mMapView.getController();
        mMapController.setZoom(16);

        //現在地を表示
        mOverlay = new MyLocationOverlay(this, mMapView);
        mOverlay.onProviderEnabled(LocationManager.GPS_PROVIDER);
        mOverlay.enableMyLocation();
        mOverlay.runOnFirstFix(new Runnable(){
            public void run(){
                GeoPoint mPoint = mOverlay.getMyLocation();
                mMapController.animateTo(mPoint);
            }
        });
        mMapView.getOverlays().add(mOverlay);

        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    }

    @Override
    public void onResume(){
        super.onResume();

        mOverlay.enableMyLocation();

        if (mLocationManager != null) {
            mLocationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, // 精度は高いが遅い(誤差15m程度)
                //LocationManager.NETWORK_PROVIDER, // 精度は低いが速い(誤差100m程度)
                //LocationManager.PASSIVE_PROVIDER, //位置情報の修正を行わない特殊なプロバイダー(他アプリ等で測位された場合に、その位置情報を流用するらしい)
                5000, //通知する時間の間隔をミリ秒で指定します
                0, //通知する距離の間隔をメートルで指定します
                this);
        }
    }

    public void onPause(){
        super.onPause();

        mOverlay.disableMyLocation();

        if (mLocationManager != null) {
            mLocationManager.removeUpdates(this);
        }
    }

    //…以下省略
}

onLocationChangedイベントにてlineOverlayにポイントを追加します。 続きを読む…»

11,548 views

Microsoft Outlookの個人用フォルダ(Outlook.pst)が開けなくなったとき

Microsoft Outlookの個人用フォルダ(Outlook.pst)が2GBを超えてしまうとエラーが発生し、開けなくなってしまいます。
この場合、受信トレイ修復ツール(Scanpst.exe)を実行しても復活できません。
なぜかというと、32bitのMicrosft Officeでは2GBを超えるファイルを扱うことができないからです。

この問題を解決するには、以下のMicrosoftダウンロードセンターより「PST2GB」というツールをダウンロードします。
http://www.microsoft.com/en-us/download/details.aspx?id=12972

PST2GBはサイズを切り詰めた.pstファイルのコピーを作成します。
指定した量のデータをファイルから切り捨てるため、作成されるコピーにはデータの一部が含まれません。
つまり、容量を2GB以下に落とすため、データを削除します。
ここで切り捨てられるデータをユーザーが選択することはできません。
続きを読む…»

22,830 views

iPhoneの連絡先バックアップ

昨今、iPhoneの連絡先が消えた、という事例が多いようです。
かく言う私も消えてしまいました。
メッセージアプリが落ちてしまい、起動しなくなってしまったので
再起動したところ、連絡先が空っぽになっていました。

[設定]-[一般]-[情報]-[診断/使用状況]より確認したところ、クラッシュしていたのは
メッセージアプリ(MobileSMS)、SpringBoardの2つ。
※SpringBoardとは、iOSのアプリケーションを管理するソフトウェア
続きを読む…»

2,024 views

vpopmal 転送設定

vpopmailのaliasを使ってメールを転送する方法

例)
vpopmailのインストール先:/home/vpopmail
転送元アドレス:moto@example.jp
転送先アドレス:saki@example.net

# 転送設定
/home/vpopmail/bin/valias -i saki@example.net moto@example.jp

# 転送設定の確認
/home/vpopmail/bin/valias -s example.jp

# 転送設定の解除
/home/vpopmail/bin/valias -d moto@example.jp
2,067 views

クリップボードを扱う [VBA]

VBAでクリップボードのデータを扱うには、
Microsoft Forms 2.0 Object Libraryへの参照設定が必要です。

参照設定なしにクリップボードのデータを扱うには

Dim ClipB    As Object

Set ClipB = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

ClipB.GetFromClipboard
MsgBox ClipB.GetText 'クリップボードの文字列を表示

ClipB.SetText "テスト"
ClipB.PutInClipboard 'クリップボードにデータを送信

Set ClipB = Nothing
7,141 views