当前位置:   article > 正文

UniApp 制作高德地图插件_高德地图小程序插件

高德地图小程序插件

1、下载Uni插件项目

在Uni官网下载Uni插件项目,并参考官网插件项目创建插件项目.

开发者须知 | uni小程序SDK

如果下载下来项目运行不了可以参考下面链接进行处理

UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客

2、引入高德SDK

2.1 在高德官网下载对应SDK

相关下载-Android 地图SDK | 高德地图API

2、引入高德SDK

Android Studio 配置工程-创建工程-开发指南-Android 地图SDK | 高德地图API

也可以参考:高德地图:No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeInitParam_易寻资料的博客-CSDN博客

 注意:一定要按照官网方式进行引入,且多种方式不能混合起引用,本人比较建议使用方法一

3、设置ApiKey和更新隐私合规

调用如下方法进行隐私合规更新和设置APiKey

可以参考:开发者注意事项-创建工程-开发指南-iOS 地图SDK | 高德地图API

MapsInitializer.updatePrivacyShow(this.mUniSDKInstance.getContext(), true, true);
MapsInitializer.updatePrivacyAgree(this.mUniSDKInstance.getContext(), true);
MapsInitializer.setApiKey(apiKey);

4、创建一个组件打开高德离线地图

  1. package com.mnyc.amap.amap3dsearch;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.util.Log;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import androidx.annotation.NonNull;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.amap.api.maps.MapsInitializer;
  10. import com.amap.api.maps.offlinemap.OfflineMapActivity;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. import io.dcloud.feature.uniapp.UniSDKInstance;
  14. import io.dcloud.feature.uniapp.ui.action.AbsComponentData;
  15. import io.dcloud.feature.uniapp.ui.component.AbsVContainer;
  16. import io.dcloud.feature.uniapp.ui.component.UniComponent;
  17. import io.dcloud.feature.uniapp.ui.component.UniComponentProp;
  18. /**
  19. * 自定义打开离线地图组件按钮
  20. */
  21. public class MnycAMapOfficelineButton extends UniComponent<Button> implements View.OnClickListener {
  22. Context context;
  23. Button button;
  24. private static final String TAG = "MnycAMapOfficelineButton";
  25. public MnycAMapOfficelineButton(UniSDKInstance instance, AbsVContainer parent, AbsComponentData componentData) {
  26. super(instance, parent, componentData);
  27. }
  28. @Override
  29. protected Button initComponentHostView(@NonNull Context context) {
  30. this.context = context;
  31. button = new Button(context);
  32. button.setText("离线地图");
  33. button.setOnClickListener(this);
  34. return button;
  35. }
  36. @Override
  37. public void onClick(View view) {
  38. try {
  39. context.startActivity(new Intent(this.context, OfflineMapActivity.class));
  40. } catch (Exception e) {
  41. exception(e);
  42. Log.e(TAG, e.getMessage());
  43. }
  44. }
  45. @UniComponentProp(name = "label")
  46. public void setLongitude(String label) {
  47. button.setText(label);
  48. }
  49. // 将打开离线地图异常进行抛出成Uni中的事件
  50. public void exception(Exception exception) {
  51. JSONObject dataJson=new JSONObject();
  52. JSONObject detailJson=new JSONObject();
  53. detailJson.put("exception", exception);
  54. //目前uni限制 参数需要放入到"detail"中 否则会被清理
  55. dataJson.put("detail", detailJson);
  56. fireEvent("exception", dataJson);
  57. }
  58. }

5、错误场景

错误1:离线地图组件没有城市列表

问题:没有调用高德更新隐私合规两个方法,进行调用即可

错误2:地图组件为白色

问题:没有调用高德更新隐私合规两个方法,进行调用即可

错误3:地图为黑屏、但是有高德Logo和放大缩小按钮

 问题:so文件引入错误,按照官网方法1引入sdk(so文件),注意不能多种方式混合引入

错误4:离线地图组件“下载出现异常”在AS中调试或者使用真机调试可以正常下载地图,打包成插件使用UniApp进行调试时出现“下载出现异常”

问题:有可能是高德ApiKey没有正确配置

解决思路:不适用高德离线地图组件,通过如下代码手动下载,在OfflineMapManager第二个参数对应类的onDownload方法中可以查看具体的错误代码是多少

  1. /构造OfflineMapManager对象
  2. OfflineMapManager amapManager = new OfflineMapManager(this, this);
  3. //按照citycode下载
  4. amapManager.downloadByCityCode(String citycode);
  5. //按照cityname下载
  6. amapManager.downloadByCityName(String cityname);

离线地图状态值

 每个值对应具体说明

 OfflineMapStatus 说明

注意:使用同一个Key在AS中调试下载等正常,因为在AS中使用的是调试模式,然后SDK中带了调试证书,所以可以正常下载。打包成SDk后放到Uni中生成自定义基座进行调试,这样在高德地图SDK这块就是使用的是你自己配置的ApiKey证书,所以如果这个证书配置错误就出现下载失败。

注意:目前发现不管ApiKey是否设置正确都地图都能够正常显示,只是离线地图下载失败,所以这点需要注意。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/111431
推荐阅读
相关标签
  

闽ICP备14008679号