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、创建一个组件打开高德离线地图

复制代码
package com.mnyc.amap.amap3dsearch;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.annotation.NonNull;

import com.alibaba.fastjson.JSONObject;
import com.amap.api.maps.MapsInitializer;
import com.amap.api.maps.offlinemap.OfflineMapActivity;

import java.util.HashMap;
import java.util.Map;

import io.dcloud.feature.uniapp.UniSDKInstance;
import io.dcloud.feature.uniapp.ui.action.AbsComponentData;
import io.dcloud.feature.uniapp.ui.component.AbsVContainer;
import io.dcloud.feature.uniapp.ui.component.UniComponent;
import io.dcloud.feature.uniapp.ui.component.UniComponentProp;

/**
 * 自定义打开离线地图组件按钮
 */
public class MnycAMapOfficelineButton extends UniComponent<Button> implements View.OnClickListener {
    Context context;
    Button button;
    private static final String TAG = "MnycAMapOfficelineButton";

    public MnycAMapOfficelineButton(UniSDKInstance instance, AbsVContainer parent, AbsComponentData componentData) {
        super(instance, parent, componentData);
    }

    @Override
    protected Button initComponentHostView(@NonNull Context context) {
        this.context = context;
        button = new Button(context);
        button.setText("离线地图");
        button.setOnClickListener(this);
        return button;
    }

    @Override
    public void onClick(View view) {
        try {
            context.startActivity(new Intent(this.context, OfflineMapActivity.class));
        } catch (Exception e) {
            exception(e);
            Log.e(TAG, e.getMessage());
        }
    }

    @UniComponentProp(name = "label")
    public void setLongitude(String label) {
        button.setText(label);
    }

//    将打开离线地图异常进行抛出成Uni中的事件
    public void exception(Exception exception) {
        JSONObject dataJson=new JSONObject();
        JSONObject detailJson=new JSONObject();
        detailJson.put("exception", exception);
        //目前uni限制 参数需要放入到"detail"中 否则会被清理
        dataJson.put("detail", detailJson);
        fireEvent("exception", dataJson);
    }
}

5、错误场景

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

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

错误2:地图组件为白色

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

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

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

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

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

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

复制代码
/构造OfflineMapManager对象 
OfflineMapManager amapManager = new OfflineMapManager(this, this);
//按照citycode下载
amapManager.downloadByCityCode(String citycode);
//按照cityname下载
amapManager.downloadByCityName(String cityname);

离线地图状态值

每个值对应具体说明

OfflineMapStatus 说明

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

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

相关推荐
2501_915921433 小时前
iOS 是开源的吗?苹果系统的封闭与开放边界全解析(含开发与开心上架(Appuploader)实战)
android·ios·小程序·uni-app·开源·iphone·webview
2501_915909067 小时前
原生 iOS 开发全流程实战,Swift 技术栈、工程结构、自动化上传与上架发布指南
android·ios·小程序·uni-app·自动化·iphone·swift
2501_915106327 小时前
Comodo HTTPS 在工程中的部署与排查实战(证书链、兼容性与真机抓包策略)
网络协议·http·ios·小程序·https·uni-app·iphone
2501_915909067 小时前
苹果软件混淆与 iOS 代码加固趋势,IPA 加密、应用防反编译与无源码保护的工程化演进
android·ios·小程序·https·uni-app·iphone·webview
2501_916007477 小时前
苹果软件混淆与 iOS 应用加固实录,从被逆向到 IPA 文件防反编译与无源码混淆解决方案
android·ios·小程序·https·uni-app·iphone·webview
2501_9160088913 小时前
iOS 26 性能分析深度指南 包含帧率、渲染、资源瓶颈与 KeyMob 协助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
iOS阿玮15 小时前
喜欢做马甲包的有福了~现在多了一招续费方式!
uni-app·app·apple
_AaronWong18 小时前
一键搞定UniApp WiFi连接!这个Vue 3 Hook让你少走弯路
前端·微信小程序·uni-app
2501_915909061 天前
tcpdump 抓包数据分析实战,命令、过滤、常见故障定位与真机补充流程
网络·测试工具·ios·小程序·uni-app·iphone·tcpdump