最終更新:
moonlight_aska 2013年09月26日(木) 00:02:36履歴
- MapOverlay.java
- Overlayクラスを継承する.
- オーバーレイの描画は, Overlay#drawメソッドに実装する.
- shadow : false --- コンテンツを描画
- shadow : true --- 影を描画
- MapView#getProjectionメソッドで, 緯度, 経度から画面上の位置を取得する.
- ここでは, マーク(円)と文字列を表示する.
package com.moonlight_aska.android.web.googlemap02;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
public class MapOverlay extends Overlay {
// 六甲山:北緯34度46分41秒, 東経135度15分49秒
private static final String LOCATION_MSG = "六甲山";
private int mLatitude = (int)( (34.0d + 46.0d/60 + 41.0d/(60*60) ) * 1E6);
private int mLongitude = (int)( (135.0d + 15.0d/60 + 49.0d/(60*60) ) * 1E6);
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// TODO Auto-generated method stub
if (!shadow) {
// 画面上の位置取得
Point position = mapView.getProjection().toPixels(getGeoPoint(), null);
// 表示色設定
Paint paint = new Paint();
paint.setARGB(128, 255, 0, 0);
paint.setStyle(Paint.Style.FILL);
// オーバーレイする内容表示
canvas.drawCircle(position.x, position.y, 10, paint);
canvas.drawText(LOCATION_MSG, position.x + 10, position.y + 5, paint);
}
super.draw(canvas, mapView, shadow);
}
public GeoPoint getGeoPoint() {
GeoPoint geoPo = new GeoPoint(mLatitude, mLongitude);
return geoPo;
}
}
- MainActivity.java
- MyOverlayのインスタンスを生成する.
- MapView#getOverlaysメソッドで, オーバーレイのリストを取得する.
- 追加するオーバーレイがリストに含まれていない場合, List#addメソッドでオーバーレイをリストに追加する.
- MapView#invalidateメソッドで, 表示の更新を行う.
package com.moonlight_aska.android.web.googlemap02;
import java.util.List;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
public class MainActivity extends MapActivity {
MapOverlay mOverlay;
MapView mView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mView = (MapView)findViewById(R.id.mapview);
MapOverlay mOverlay = new MapOverlay();
// 地図表示
GeoPoint geoPo = mOverlay.getGeoPoint();
mView.getController().animateTo(geoPo);
// オーバーレイ表示
List<Overlay> overlays = mView.getOverlays();
if (!overlays.contains(mOverlay)) {
overlays.add(mOverlay);
mView.invalidate();
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
- 動作例

コメントをかく