百度地图 画轨迹

本文介绍了如何在Android应用中利用百度地图SDK进行地图的初始化、地图控制器的设置以及如何在地图上绘制点和连接线。通过实例展示了GeoPoint类的使用、Projection转换坐标、Paint绘制圆圈和线条的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 com.baidu.mapapi.BMapManager;  

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 BaiduMapActivity extends MapActivity {  

        private Context mContext;  

        private MapView mapView;  

        @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.baidumap_layout);  

  

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

                if (baseApp.mBMapManage == null) {  

                        baseApp.mBMapManage = new BMapManager(mContext);  

                        baseApp.mBMapManage.init(baseApp.mStrKey,  

                                        new BaseApplication.MyGeneralListener());  

                }  

                baseApp.mBMapManage.start();  

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

                mapView = (MapView) findViewById(R.id.bmapView);  

                mapView.setBuiltInZoomControls(true);  

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

                mapView.setDrawOverlayWhenZooming(true);  

  

                // RouteLine routeLine =  

                // (RouteLine)getIntent().getSerializableExtra("routeLine");  

  

                //这里画点和连接线  

                MyOverlay myOverlay = new MyOverlay();  

                mapView.getOverlays().add(myOverlay);  

                  

                MapController mapController = mapView.getController();  

                mapController.zoomIn();  

                  

                gpoint1 = new GeoPoint((int) (2259316 * 10),  

                                (int) (11396279 * 10));  

                gpoint2 = new GeoPoint((int) (2259245 * 10),  

                                (int) (11396226 * 10));  

                gpoint3 = new GeoPoint((int) (2259121 * 10),  

                                (int) (11396066 * 10));                  

                mapController.animateTo(gpoint1);//设置一个出发点  

        }  

  

        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.BLUE);  

                        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(4);  

  

                        //连接  

                        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);  

                }  

        }  

  

} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值