oXׂ̂悤ɍx͂̊Ԃ̓̂̍Wׂ܂Bו͑SłBoX̒ו
QlTCg
http://wikiwiki.jp/android/?Google%20Map%A4%CBDrawable%A4%F2%C7%DB%C3%D6%A4%B9%A4%EB
LineOverlay.java
public class LineOverlay extends Overlay {
private GeoPoint geoStart;
private GeoPoint geoEnd;
public LineOverlay( GeoPoint geoStart, GeoPoint geoEnd) {
this.geoStart = geoStart;
this.geoEnd = geoEnd;
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
if( !shadow ) {
Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG);
paint.setStyle( Paint.Style.STROKE);
paint.setAntiAlias( true);
paint.setStrokeWidth( 3);
paint.setColor( Color.RED);
Path path = new Path();
Projection projection = mapView.getProjection();
Point pxStart = projection.toPixels( geoStart, null);
Point pxEnd = projection.toPixels( geoEnd, null);
path.moveTo( pxStart.x, pxStart.y);
path.lineTo( pxEnd.x, pxEnd.y);
canvas.drawPath(path, paint);
}
}
}
LineOverlayのコンストラクタで線の開始と終了のGeoPoint2つを指定します。指定した座標から座標までにCanvasを使って線を描画します。
SimpleMapActivity.java
public class SimpleMapActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_map);
MapView map = (MapView)findViewById( R.id.map);
map.setClickable(true);
map.setBuiltInZoomControls(true);
Drawable pin = getResources().getDrawable( R.drawable.pin);
PinItemizedOverlay pinOverlay = new PinItemizedOverlay( pin);
map.getOverlays().add( pinOverlay);
GeoPoint tokyo = new GeoPoint( 35681396, 139766049);
GeoPoint osaka = new GeoPoint( 34701895, 135494975);
pinOverlay.addPoint( tokyo);
pinOverlay.addPoint( osaka);
LineOverlay lineOverlay = new LineOverlay( tokyo, osaka);
map.getOverlays().add( lineOverlay);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
サンプルを実行すると東京駅と大阪駅との間に線が引かれていることが確認できます。
MyMapActivity.java
GeoPoint a1 = new GeoPoint ((int)( 35395791 ),(int)( 136693796 ));
GeoPoint a2 = new GeoPoint ((int)( 35395669 ),(int)( 136693485 ));
LineOverlay lineOverlaya1 = new LineOverlay( a1 , a2 );
mapView.getOverlays().add( lineOverlaya1 );
Geopointを使ってa1点とa2点の座標を決めます。そして、LineOverlayにa1から開始しa2まで線を引くと設定。最後にGoogleMap(mapView)に重ねることで表示します。これと同じ要領で47箇所全てを繋ぎます。
このように表示することが出来ます。
戻る
|