スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android Google Maps オーバーレイを貼り付ける

オーバーレイを貼り付ける	
Android Maps APIには簡単に地図を表示するだけではなく、自由に画像等を上書きすることが
可能です。
今回は自身の位置をGPS取得し、地図上に画像を配置します。
image002 (4)

■GPS取得とオーバーレイの配置
Mapを表示するためにMapActivityを継承し、かつGPSを取得するようにします。
○GMapsSampleアクティビティクラス
1: package sample.google.maps;
2:
3: import java.util.List;
4: import com.google.android.maps.GeoPoint;
5: import com.google.android.maps.MapActivity;
6: import com.google.android.maps.MapController;
7: import com.google.android.maps.MapView;
8: import com.google.android.maps.Overlay;
9: import android.content.Context;
10: import android.location.Location;
11: import android.location.LocationListener;
12: import android.location.LocationManager;
13: import android.os.Bundle;
14:
15: public class GMapsSample extends MapActivity implements LocationListener { ①
16:
17: private LocationManager locManager;
18:
19: @Override
20: public void onCreate(Bundle savedInstanceState) {
21: super.onCreate(savedInstanceState);
22: setContentView(R.layout.maplayout);
23:
24: locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); ②
25: locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,0, this);
26: }
27:
28: @Override
29: public void onLocationChanged(Location location) {
30: GeoPoint gp = new GeoPoint( ③
31: (int) (location.getLatitude() * 1E6),
32: (int) (location.getLongitude() * 1E6));
33:
34: MapView map = (MapView) findViewById(R.id.map);
35: map.setClickable(true);
36: map.setBuiltInZoomControls(true);
37:
38: // 現在地を表示
39: MapController cnt = map.getController(); ④
40: cnt.setZoom(16); // ズーム
41: cnt.animateTo(gp); // 現在地の設定
42:
43: List<Overlay> list = map.getOverlays(); ⑦
44: MapsOverlay overlay = new MapsOverlay(gp); // オーバーレイの設定 ⑧
45: list.add(overlay); ⑨
46: }
47:
48: @Override
49: protected boolean isRouteDisplayed() {
50: return true;
51: }
52:
53: @Override
54: protected void onDestroy() {
55: super.onDestroy();
56: locManager.removeUpdates(this);
57: }
58:
59: public void onProviderDisabled(String provider) {
60: }
61:
62: public void onProviderEnabled(String provider) {
63: }
64:
65: public void onStatusChanged(String provider, int status, Bundle extras) {
66: }
67: }
68:
①GPSを利用するためにLocationListenerを実装します
②簡単に位置情報を取得するために今回はNetwoarkからGPSを取得するようにします。
③オーバーレイにてオブジェクトを配置する際の座標は、GeoPointにて指定できます。
そのため、現在値(Location)をGeoPointへ変換を行います。
④MapControllerを利用して現在値を設定します。
setZoomにてズーム状態を設定します。
animateToでGeoPoint(現在値)を設定します。
これで現在値がズームされた状態で初期表示されます。
⑦getOverlaysでOverleyのリストを取得します。
⑧Overlayを継承したクラスを生成します。
⑨addメソッドでOverlayを貼り付けます。


■Map上へのオブジェクト配置
drawメソッドで画像を配置します。
1: package sample.google.maps;
2:
3: import com.google.android.maps.GeoPoint;
4: import com.google.android.maps.MapView;
5: import com.google.android.maps.Overlay;
6: import com.google.android.maps.Projection;
7: import android.graphics.Canvas;
8: import android.graphics.Color;
9: import android.graphics.Paint;
10: import android.graphics.Point;
11:
12: public class MapsOverlay extends Overlay {
13:
14: private GeoPoint myPoint = null;
15:
16: public MapsOverlay(GeoPoint myPoint){
17: this.myPoint = myPoint;
18: }
19: public void draw(Canvas canvas, MapView mapView, boolean shadow) { ①
20: try{
21: Projection pro = mapView.getProjection();// Mapと画面の位置を計算するオブジェクト ②
22: Point point = pro.toPixels(myPoint, null); // ロケーションから、表示する位置を計算する
23:
24: //現在地
25: Paint pai = new Paint();
26: pai.setColor(Color.RED);
27: canvas.drawCircle(point.x, point.y, 10, pai);
28: }catch(Exception ex){
29: }
30: }
31:
32: }
①描画はdrawメソッド内で記述します。
②そのGeoPointが地図上のどの座標かを計算するために、Projectionを利用します。
計算結果のpointオブジェクトを利用してcanvasへ描画を行います。


■マニフェストファイル
GPSを利用するためにマニフェストファイルへ追記します。
1:
2: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
3:
地図への描画はOverlayクラスを継承したdrawメソッド内に記載するだけで簡単に実現できます。
スポンサーサイト

コメントの投稿

非公開コメント

おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。