在app中怎么做导航?

189 阅读1分钟

导航的话通常都是调用第三方(高德,或者百度)。如果指定那个地图的话可以在高德地图开发文档中找。这边直接上代码

navigaToShop(item) {

    let shop_latitude = item.latitude;//目的地纬度

    let shop_longtude = item.longitude;//目的地经度

     let shop_address =item.stationname;//目的地地址

     let current_latitude = this.latitude;//当前纬度

     let current_longitude = this.longitude;//当前经度

     var packageName = 'com.autonavi.minimap';

     var main = plus.android.runtimeMainActivity();

     var packageManager = main.getPackageManager();

     var PackageManager = plus.android.importClass(packageManager);

     var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);

      if (packageInfo)

       {

                   var Uri = plus.android.importClass("android.net.Uri");

                   var url = "amapuri://route/plan?sourceApplication=maxuslife" + "&sid=A&slat=" + current_latitude + "&slon=" + current_longitude + "&sname=" + this .current_address + "&did=B&dlat=" + shop_latitude + "&dlon=" + shop_longtude + "&dname=" + shop_address + "D10&dev=0&t=0";

                 var Intent = plus.android.importClass('android.content.Intent');

                 var intent = new Intent();

                 intent.setAction(Intent.ACTION_VIEW);

                 intent.addCategory(Intent.CATEGORY_DEFAULT);

                 var uri = Uri.parse(url);

                  //将功能Scheme以URI的方式传入

                 data intent.setData(uri);

                  intent.setPackage("com.autonavi.minimap");

                  var main = plus.android.runtimeMainActivity();

                  main.startActivity(intent);

     } else {

        uni.showToast({ icon: 'none', title: `未安装高德导航APP,请先安装` })

} },

我在项目中的代码

/**
		 * @description: 唤起高德导航
		 */
		toAddress() {
			let startLon = this.longitude;
			let startLat = this.latitude;
			let endLon = this.driverLongitude;
			let endLat = this.driverLatitude;
			// 无人机导航经纬度
			if (this.taskInfo.instruction == 1) {
				let endLat = this.takeoffLatitude;
				let endLon = this.takeoffLongitude;
			}
			 var packageName = 'com.autonavi.minimap';
			 var main = plus.android.runtimeMainActivity();
			 var packageManager = main.getPackageManager();
			 var PackageManager = plus.android.importClass(packageManager);
			 var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
			 if (packageInfo) {
			 	var Uri = plus.android.importClass('android.net.Uri');
			 	var url =
			 		'amapuri://route/plan?sourceApplication=maxuslife' +
			 		'&sid=A&slat=' +
			 		startLat +
			 		'&slon=' +
				startLon +
					'&sname=起始地点' +
					'&did=B&dlat=' +
					endLat +
					'&dlon=' +
			 		endLon +
			 		'&dname=结束地点&dev=0&t=0';
			 	var Intent = plus.android.importClass('android.content.Intent');
			 	var intent = new Intent();
			 	intent.setAction(Intent.ACTION_VIEW);
			 	intent.addCategory(Intent.CATEGORY_DEFAULT);
			 	var uri = Uri.parse(url);
			 	//将功能Scheme以URI的方式传入data
			 	intent.setData(uri);
			 	intent.setPackage('com.autonavi.minimap');
			 	var main = plus.android.runtimeMainActivity();
			 	main.startActivity(intent);
			 } else {
			 	 alert('未安装' + packageName + '')
			 	uni.showToast({
					title: `请安装高德地图`
			 	});
			 }
		},

如果想要手机安装了什么导航软件则开启哪种导航软件可以用uni-app自带的uni.openLocation

toAddress() {
			let startLon = this.longitude;
			let startLat = this.latitude;
			let endLon = this.driverLongitude;
			let endLat = this.driverLatitude;
			// 无人机导航经纬度
			if (this.taskInfo.instruction == 1) {
				let endLat = this.takeoffLatitude;
				let endLon = this.takeoffLongitude;
			}

			uni.openLocation({
				latitude: Number(endLat),
				longitude: Number(endLon),
				name: '当前位置导航任务位置',
				address: '',
				success() {
					console.log('success');
				}
			});
                 },