uniapp,通过api url 的方式,来进行android,ios地图调用(调用手机客户端)

795 阅读1分钟

第一步,高德为例,去高德注册android和ios的对应的key;结果如下

第二步,将参数配置在,hbuilderx的manifest.json中,

第三步,敲代码,android 和ios的不一样的,需要先判断手机的平台

switch (uni.getSystemInfoSync().platform) {

case "android":
 break;
case "ios":
 break;
default:
 break;

}

uni.getSystemInfoSync().platform 用于获取设备的系统平台,返回的是一个字符串('android')/('ios')

第四部,编写android的代码:

case "android":

      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 =
          "androidamap://route?sourceApplication=amap" +
          "&sid=A&slat=" +
          that.latitude +
          "&slon=" +
          that.longitude +
          "&sname=当前位置" +
          "&did=B&dlat=" +
          slat +
          "&dlon=" +
          slon +
          "&dname=" +
          address +
          "&dev=0&t=2";
        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.hideLoading();
        uni.showToast({
          title: "请安装高德地图完成导航",
          duration: 2000,
          icon: "none"
        });
      }
      break;
      

第五部,编写ios的代码:

case "ios":

      var urlStr =
        "iosamap://path?sourceApplication=amap&backScheme=iosamap&sid=slat=" +
        that.latitude +
        "&slon=" +
        that.longitude +
        "&sname=我的位置&did=&dlat=" +
        slat +
        "&dlon=" +
        slon +
        "&dname=" +
        address +
        "&dev=0&t=0";
      var UIApplication = plus.ios.import("UIApplication");

      var NSURL = plus.ios.import("NSURL");

      var encodeString = encodeURI(urlStr);

      var dbScheme = NSURL.URLWithString(encodeString);

      var application = UIApplication.sharedApplication();

      var a = application.openURL(dbScheme);

      plus.ios.deleteObject(application);

      uni.hideLoading();
      if (!a) {
        let appUrl = "itms-apps://itunes.apple.com/cn/app/id461703208?mt=8"; 
        plus.runtime.openURL(appUrl, function(err) {});
        uni.showToast({
          title: "请先安装并授权高德地图",
          duration: 2000,
          icon: "none"
        });
      }
      break;

ios中的openurl方法,会返回一个boolean值,结果是根据当前设备是否安装了对应的app来打开连接;

itms-apps://itunes.apple.com/cn/app/idxxxx?mt=8 这是跳转ios应用商店,去下载,XXXX为对应的AppID,只是用与ios,安卓略有不同