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箇所全てを繋ぎます。




このように表示することが出来ます。


戻る