您的位置:首页 > 其它

百度地图 实现行走轨迹描绘(觉得网上好多缺点,不全,自己写了一个)

2013-03-12 17:17 316 查看


<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.baidu.mapapi.MapView
android:id="@+id/bmapsView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />

</LinearLayout>


package com.xmb.navigationdemoactivity;

import android.content.Context;

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 android.util.Log;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKEvent;
import com.baidu.mapapi.MKGeneralListener;

import com.baidu.mapapi.GeoPoint;

import com.baidu.mapapi.MapActivity;

import com.baidu.mapapi.MapController;

import com.baidu.mapapi.MapView;

import com.baidu.mapapi.Overlay;

import com.baidu.mapapi.Projection;

public class LineTest extends MapActivity {

private Context mContext;

private MapView mapView;
private BMapManager mMapManager = null;
private double mLat1 = 23.178848; // point1纬度
private double mLon1 = 113.418792; // point1经度

private double mLat2 = 23.078848;
private double mLon2 = 113.418792;

private double mLat3 = 23.178848;
private double mLon3 = 113.018792;
@Override

protected boolean isRouteDisplayed() {

// TODO Auto-generated method stub

return false;

}

private GeoPoint gpoint1, gpoint2, gpoint3;// 连线的点

@Override

protected void onCreate(Bundle arg0) {

super.onCreate(arg0);

setContentView(R.layout.line);
mMapManager = new BMapManager(getApplication());
mMapManager.init("C9DF0F24E9FFCCEB4AF1DA296E8A694B311A3073", new MyGeneralListener());

super.initMapActivity(mMapManager);

/*                BaseApplication baseApp = (BaseApplication) this.getApplication();

if (baseApp.mMapManagerage == null) {

baseApp.mMapManagerage = new BMapManager(mContext);

baseApp.mMapManagerage.init(baseApp.mStrKey,

new BaseApplication.MyGeneralListener());

}

baseApp.mMapManagerage.start();

super.initMapActivity(baseApp.mMapManagerage);// 初始化map sdk

*/               mapView = (MapView) findViewById(R.id.bmapsView1);

mapView.setBuiltInZoomControls(true);

// 设置在缩放动画过程中也显示overlay,默认为不绘制

mapView.setDrawOverlayWhenZooming(true);

// RouteLine routeLine =

// (RouteLine)getIntent().getSerializableExtra("routeLine");
gpoint1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));

gpoint2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6));

gpoint3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6));
MapController mapController = mapView.getController();
//mapController.animateTo(gpoint1);//设置一个起点
//这里画点和连接线
mapController.setCenter(gpoint1);
MyOverlay myOverlay = new MyOverlay();

mapView.getOverlays().add(myOverlay);

mapController.zoomIn();

}

// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyGeneralListener implements MKGeneralListener {
@Override
public void onGetNetworkState(int iError) {
Log.d("MyGeneralListener", "onGetNetworkState error is "+ iError);
Toast.makeText(LineTest.this, "您的网络出错啦!",
Toast.LENGTH_LONG).show();
}

@Override
public void onGetPermissionState(int iError) {
Log.d("MyGeneralListener", "onGetPermissionState error is "+ iError);
if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {
// 授权Key错误:
Toast.makeText(LineTest.this,
"请在BMapApiDemoApp.java文件输入正确的授权Key!",
Toast.LENGTH_LONG).show();
}
}
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if (mMapManager != null) {
mMapManager.destroy();
mMapManager = null;
}
super.onDestroy();
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
if (mMapManager != null) {
mMapManager.stop();
}
super.onPause();
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
if (mMapManager != null) {
mMapManager.start();
}
super.onResume();
}

class MyOverlay extends Overlay {

@Override

public void draw(Canvas canvas, MapView mapView, boolean shadow) {

super.draw(canvas, mapView, shadow);

Projection projection = mapView.getProjection();

Point p1 = new Point();

Point p2 = new Point();

Point p3 = new Point();

// 经度转像素

projection.toPixels(gpoint1, p1);

projection.toPixels(gpoint2, p2);

projection.toPixels(gpoint3, p3);

//第一个画笔 画圆

Paint fillPaint = new Paint();

fillPaint.setColor(Color.GREEN);

fillPaint.setAntiAlias(true);

fillPaint.setStyle(Style.FILL);

// 将图画到上层

canvas.drawCircle(p1.x, p1.y, 5.0f, fillPaint);

canvas.drawCircle(p2.x, p2.y, 5.0f, fillPaint);

canvas.drawCircle(p3.x, p3.y, 5.0f, fillPaint);

//第二个画笔 画线

Paint paint = new Paint();

paint.setColor(Color.BLUE);

paint.setDither(true);

paint.setStyle(Paint.Style.STROKE);

paint.setStrokeJoin(Paint.Join.ROUND);

paint.setStrokeCap(Paint.Cap.ROUND);

paint.setStrokeWidth(8);

//连接

Path path = new Path();

path.moveTo(p1.x, p1.y);

path.lineTo(p2.x, p2.y);

path.lineTo(p3.x, p3.y);

//画出路径

canvas.drawPath(path, paint);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐