<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/map_view2"
android:clickable="true"
android:apiKey="0zoMLU7jtw20HSV-bpo6p81D6rFEvGwMz2BJqiw"
/>
</LinearLayout>
package com.example.googlemap;
import java.util.List;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class DrawLineinGoogleMap extends MapActivity {
//Projection的主要的功能就是进行屏幕坐标与地图坐标的转化
private Projection projection;
//获取地图所有的图层
private List<Overlay> overlays;
//获取地图的所有方法
private MapView mapview;
//控制地图
private MapController mapcontroller;
//地图上的起始地址
private GeoPoint geobegin;
//地图上的终止地址
private GeoPoint geoend;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
//指定起止位置
geobegin=new GeoPoint(10, 20);
geoend=new GeoPoint(20,30);
setContentView(R.layout.drawlineingooglemap);
mapview=(MapView)findViewById(R.id.map_view2);
mapview.setBuiltInZoomControls(true);//显示缩放按钮
mapcontroller=mapview.getController();
overlays=mapview.getOverlays();
projection=mapview.getProjection();
overlays.add(new PointOverlay(geobegin));
overlays.add(new PointOverlay(geoend));
overlays.add(new LineOverlay(geobegin,geoend));
mapcontroller.setCenter(geobegin);
mapcontroller.setZoom(12);//设置缩放的最大值
}
/*
* 自定义坐标的图片图层
* */
class PointOverlay extends Overlay{
private GeoPoint geopoint;
public PointOverlay() {
}
public PointOverlay(GeoPoint geopoint) {
this.geopoint = geopoint;
}
@Override
public void draw(Canvas canvas, MapView mapv, boolean arg2) {
super.draw(canvas, mapv, arg2);
//创建屏幕上的坐标
Point point=new Point();
//将地图的坐标转换成屏幕的坐标
projection.toPixels(geopoint, point);
//创建位图
Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//创建画笔
Paint paint=new Paint();
//在画布上用画笔话
canvas.drawBitmap(bmp, point.x, point.y-16, paint);
}
}
class LineOverlay extends Overlay{
private GeoPoint begin;
private GeoPoint end;
public LineOverlay() {
}
public LineOverlay(GeoPoint beginpoint,GeoPoint endpoint) {
this.begin=beginpoint;
this.end=endpoint;
}
@Override
public void draw(Canvas canvas, MapView mapv, boolean arg2) {
super.draw(canvas, mapv, arg2);
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Style.FILL_AND_STROKE);
//创建屏幕上的坐标
Point startpoint=new Point();
Point endpoint=new Point();
//将地图的坐标转换成屏幕的坐标
projection.toPixels(begin, startpoint);
projection.toPixels(end, endpoint);
Path path=new Path();
path.moveTo(startpoint.x, startpoint.y);
path.lineTo(endpoint.x, endpoint.y);
canvas.drawPath(path, paint);
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}