帮忙改一下,总是运行不起来跪谢!
public class ClientActivity extends Activity {
private Projection projection;
private List<Overlay> overlays;
private MapController mapController;
private GeoPoint beginGeoPoint;
private GeoPoint endGeoPoint;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
beginGeoPoint=new GeoPoint(116,37);
endGeoPoint=new GeoPoint(110,40);
MapView mapView=(MapView)findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
mapController=mapView.getController();
overlays=mapView.getOverlays();
projection=mapView.getProjection();
overlays.add(new PointOverlay(beginGeoPoint));
overlays.add(new PointOverlay(endGeoPoint));
overlays.add(new LineOverlay(beginGeoPoint,endGeoPoint));
mapController.animateTo(beginGeoPoint);
mapController.setZoom(12);
}
protected boolean isRouteDisplayed() {
return false;
}
class LineOverlay extends Overlay
{
private GeoPoint begin;
private GeoPoint end;
public LineOverlay(){}
public LineOverlay(GeoPoint begin,GeoPoint end)
{
this.begin=begin;
this.end=end;
}
public void draw(Canvas canvas,MapView mapview,boolean shadow)
{
super.draw(canvas, mapview, shadow);
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(2);
Point beginPoint=new Point();
Point endPoint=new Point();
Path path=new Path();
projection.toPixels(beginGeoPoint,beginPoint);
projection.toPixels(endGeoPoint,endPoint);
path.moveTo(endPoint.x, endPoint.y);
path.lineTo(beginPoint.x,beginPoint.y);
canvas.drawPath(path, paint);
}
}
class PointOverlay extends Overlay
{
private GeoPoint geopoint;
public PointOverlay(){}
public PointOverlay(GeoPoint geo)
{
this.geopoint=geo;
}
public void draw(Canvas canvas,MapView mapview,boolean shadow)
{
super.draw(canvas, mapview, shadow);
Point point=new Point();
projection.toPixels(geopoint,point);
Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Paint paint=new Paint();
canvas.drawBitmap(bm,point.x,point.y ,paint);
}
}
}
public class ClientActivity extends Activity {
private Projection projection;
private List<Overlay> overlays;
private MapController mapController;
private GeoPoint beginGeoPoint;
private GeoPoint endGeoPoint;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
beginGeoPoint=new GeoPoint(116,37);
endGeoPoint=new GeoPoint(110,40);
MapView mapView=(MapView)findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
mapController=mapView.getController();
overlays=mapView.getOverlays();
projection=mapView.getProjection();
overlays.add(new PointOverlay(beginGeoPoint));
overlays.add(new PointOverlay(endGeoPoint));
overlays.add(new LineOverlay(beginGeoPoint,endGeoPoint));
mapController.animateTo(beginGeoPoint);
mapController.setZoom(12);
}
protected boolean isRouteDisplayed() {
return false;
}
class LineOverlay extends Overlay
{
private GeoPoint begin;
private GeoPoint end;
public LineOverlay(){}
public LineOverlay(GeoPoint begin,GeoPoint end)
{
this.begin=begin;
this.end=end;
}
public void draw(Canvas canvas,MapView mapview,boolean shadow)
{
super.draw(canvas, mapview, shadow);
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(2);
Point beginPoint=new Point();
Point endPoint=new Point();
Path path=new Path();
projection.toPixels(beginGeoPoint,beginPoint);
projection.toPixels(endGeoPoint,endPoint);
path.moveTo(endPoint.x, endPoint.y);
path.lineTo(beginPoint.x,beginPoint.y);
canvas.drawPath(path, paint);
}
}
class PointOverlay extends Overlay
{
private GeoPoint geopoint;
public PointOverlay(){}
public PointOverlay(GeoPoint geo)
{
this.geopoint=geo;
}
public void draw(Canvas canvas,MapView mapview,boolean shadow)
{
super.draw(canvas, mapview, shadow);
Point point=new Point();
projection.toPixels(geopoint,point);
Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Paint paint=new Paint();
canvas.drawBitmap(bm,point.x,point.y ,paint);
}
}
}
改成
public class ClientActivity extends MapActivity
11-26 17:23:30.038: ERROR/AndroidRuntime(4504): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
另外,你定位的目标好像经纬度搞反了,定位到海里面了。
mMapView.setBuiltInZoomControls(true);//允许缩放
看一下你定位到哪里了
2.背景蓝色说明你的坐标在海里
3.你没加放大缩小功能。修改你的代码:
beginGeoPoint = new GeoPoint(1160000, 370000);
endGeoPoint = new GeoPoint(1100000, 400000);mapView.setStreetView(false);
mapView.setEnabled(true);
mapView.setClickable(true);
运行不起来了,报错
11-26 12:55:36.851: ERROR/AndroidRuntime(244): java.lang.RuntimeException: Unable to start activity ComponentInfo{test.Test/test.Test.TestActivity}: java.lang.ClassCastException: android.widget.TextView
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.os.Looper.loop(Looper.java:123)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at java.lang.reflect.Method.invoke(Method.java:521)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at dalvik.system.NativeStart.main(Native Method)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): Caused by: java.lang.ClassCastException: android.widget.TextView
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at test.Test.TestActivity.onCreate(TestActivity.java:42)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
11-26 12:55:36.851: ERROR/AndroidRuntime(244): ... 11 more
11-26 12:55:36.883: INFO/Process(36): Sending signal. PID: 244 SIG: 3
package com.honesty;import java.util.List;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;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;public class ClientActivity extends MapActivity {
private Projection projection;
private List<Overlay> overlays;
private MapController mapController;
private GeoPoint beginGeoPoint;
private GeoPoint endGeoPoint; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); beginGeoPoint = new GeoPoint(1160000, 370000);
endGeoPoint = new GeoPoint(1100000, 400000); MapView mapView = (MapView) findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
mapView.setStreetView(false);
mapView.setEnabled(true);
mapView.setClickable(true); mapController = mapView.getController();
overlays = mapView.getOverlays();
projection = mapView.getProjection(); overlays.add(new PointOverlay(beginGeoPoint));
overlays.add(new PointOverlay(endGeoPoint));
overlays.add(new LineOverlay(beginGeoPoint, endGeoPoint));
mapController.animateTo(beginGeoPoint);
mapController.setZoom(12);
} protected boolean isRouteDisplayed() {
return false;
} class LineOverlay extends Overlay {
private GeoPoint begin;
private GeoPoint end; public LineOverlay() {
} public LineOverlay(GeoPoint begin, GeoPoint end) {
this.begin = begin;
this.end = end;
} public void draw(Canvas canvas, MapView mapview, boolean shadow) {
super.draw(canvas, mapview, shadow);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(2);
Point beginPoint = new Point();
Point endPoint = new Point();
Path path = new Path();
projection.toPixels(beginGeoPoint, beginPoint);
projection.toPixels(endGeoPoint, endPoint);
path.moveTo(endPoint.x, endPoint.y);
path.lineTo(beginPoint.x, beginPoint.y);
canvas.drawPath(path, paint);
}
} class PointOverlay extends Overlay {
private GeoPoint geopoint; public PointOverlay() {
} public PointOverlay(GeoPoint geo) {
this.geopoint = geo;
} public void draw(Canvas canvas, MapView mapview, boolean shadow) {
super.draw(canvas, mapview, shadow);
Point point = new Point();
projection.toPixels(geopoint, point);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.icon);
Paint paint = new Paint();
canvas.drawBitmap(bm, point.x, point.y, paint);
}
}}这是你的程序,我就该了一点
运行的效果
http://hi.csdn.net/attachment/201111/26/10249474_1322311759cjHR.jpg.thumb.jpg