Android安卓百度地图定位实现APP(源码+APK) 毕业设计

时间:2024-04-07 14:53:08

百度地图实时定位+导航路径规划的实现APP

本科生毕业设计:《一种智能停车系统的设计》,成都信息工程大学,2018

1、简单实时定位效果如图,打开即可用

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

2、高级功能:已实现车辆的自动识别(二维码扫描识别功能)、车位计时、充值缴费(模拟)、地图自动引导(路线规划功能)。登录注册(包含自动登录) 等功能。基于B/S架构的java web网络结构模式,采用了百度地图和LBS云服务器的设计方法

LBS云添加自定义车位信息

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

二维码扫描识别

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

路径规划:包含步行路线、驾车路线,可设置时间最短、路径最短等策略

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

3、数据库设计

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

程序功能逻辑设计

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

本科生毕业设计配套答辩PPT前言页

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

程序的说明文档

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

Android安卓百度地图定位实现APP(源码+APK) 毕业设计

附上源码:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        //this.requestWindowFeature(Window.FEATURE_NO_TITLE);  //去标题
        setContentView(R.layout.activity_main);
        this.context=this;
        activityList.add(this);  
        
        mCloudManager = CloudManager.getInstance();
        mCloudManager.init();
        mCloudManager.registerListener(MainActivity.this);
        initMap();//初始化地图
		initLocation();//定位
		initView();//初始化控件
		
		final PoiSearch   search = PoiSearch.newInstance();
		//路线规划对象
		final RoutePlanSearch routePlanSearch = RoutePlanSearch.newInstance();
		/**///城市搜索,需要城市名称和关键字
		Button poi=(Button) findViewById(R. id.poi) ;
        
		//mDb06ll = (Button) findViewById(R.id.mDb06llNaviBtn);  
		initListener();  
        if (initDirs()) {  
            initNavi();       
        }  


    }
//步行路线结果回调
            @Override
            public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
                mBaiduMap.clear();
                if (walkingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
                    WalkingRouteOverlay walkingOverlay = new WalkingRouteOverlay(mBaiduMap);
                    walkingOverlay.setData(walkingRouteResult.getRouteLines().get(0));// 设置一条路线方案
                    walkingOverlay.addToMap();
                    walkingOverlay.zoomToSpan();
                    mBaiduMap.setOnMarkerClickListener(walkingOverlay);
                    Log.e("TAG", walkingOverlay.getOverlayOptions() + "");

                } else {
                    Toast.makeText(getBaseContext(), "搜不到!", Toast.LENGTH_SHORT).show();
                }
            }
//驾车路线结果回调
            @Override
            public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
                mBaiduMap.clear();//清除图标或路线
                if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
                    DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(mBaiduMap);
                    drivingRouteOverlay.setData(drivingRouteResult.getRouteLines().get(0));// 设置一条驾车路线方案  0换成1会闪退!!
                    mBaiduMap.setOnMarkerClickListener(drivingRouteOverlay);
                    drivingRouteOverlay.addToMap();
                    drivingRouteOverlay.zoomToSpan();
                    int totalLine = drivingRouteResult.getRouteLines().size();
                    Toast.makeText(getBaseContext(),"共查询出" + totalLine + "条符合条件的线路", Toast.LENGTH_LONG).show();

                    // 通过getTaxiInfo()可以得到很多关于驾车的信息
                }
                else Toast.makeText(getBaseContext(), "抱歉,未找到结果",Toast.LENGTH_SHORT).show();
                
            }

 

private void initLocation() {
	 	locationMode= MyLocationConfiguration.LocationMode.NORMAL;
	
	     //定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
	     mlocationClient=new LocationClient(this);
	     mlistener=new MylocationListener();
	
	     //注册监听器
	     mlocationClient.registerLocationListener(mlistener);
	     //配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等
	     LocationClientOption mOption=new LocationClientOption();
	     //设置坐标类型
	     mOption.setCoorType("bd09ll");
	     //设置是否需要地址信息,默认为无地址
	     mOption.setIsNeedAddress(true);
	     //设置是否打开gps进行定位
	     mOption.setOpenGps(true);
	     //设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效
	     int span=1000;
	     mOption.setScanSpan(span);
	     //设置 LocationClientOption
	     mlocationClient.setLocOption(mOption);
	
	     //初始化图标,BitmapDescriptorFactory是bitmap 描述信息工厂类,在使用该类方法之前请确保已经调用了 SDKInitializer.initialize(Context) 函数以提供全局 Context 信息。
	     //mIconLocation= BitmapDescriptorFactory.fromResource(R.drawable.car);
	
	     myOrientationListener=new MyOrientationListener(context);
	
	     myOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {
	         @Override
	         public void onOrientationChanged(float x) {
	             mCurrentX=x;
	         }
	     });
	
	
	 }

 

//云检索
	public void onGetSearchResult(CloudSearchResult result, int error) {
        if (result != null && result.poiList != null
                && result.poiList.size() > 0) {
            Log.d(LTAG, "onGetSearchResult, result length: " + result.poiList.size());
            mBaiduMap.clear();
            BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);
            LatLng ll;
            LatLngBounds.Builder builder = new Builder();
            for (CloudPoiInfo info : result.poiList) {
                ll = new LatLng(info.latitude, info.longitude);
                BDMapDataY bean =new BDMapDataY();//云数据
                bean.setLatitude(info.latitude);
                bean.setLongitude(info.longitude);
                bean.setTitle(info.title);//这里是title!!
                Bundle data = new Bundle();
                data.putSerializable("Cloud", bean);//哇 信息量巨大!
                OverlayOptions oo = new MarkerOptions().icon(bd).position(ll).extraInfo(data);
                mBaiduMap.addOverlay(oo);
                builder.include(ll);
            }
            LatLngBounds bounds = builder.build();
            MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds);
            mBaiduMap.animateMapStatus(u);
        }
        else Toast.makeText(getApplication(), "搜索不到你需要的信息!", Toast.LENGTH_SHORT).show();
    }

整个下来通过网络资源整理学习,并完善了一些代码,程序员挺累的

如果觉得不错可以点歌关注吧~

后续将分享更多程序代码~

合作请联系chat 1012638162

有问题可以在下面提出来~