搜了一圈没有找到相关资料,官网文档JSAPI Explorer扫描二维码可以调通,但是自己编写就不可以。
怀疑是使用uniapp的问题,然后重新使用原生框架创建了一个钉钉项目,也是不行。
询问客服,ai答非所问,加群咨询也是无解。
看官网文档小程序是支持的,但是在小程序中打印dd对象,里面对于位置(locat)关键字的方法只有两个。没有locateInMap。
很奇怪,断断续续继续研究调试,怀疑版本号的问题也是无果,最后看到了这个文档恍然大悟:https://open.dingtalk.com/document/isvapp/mini-app-programs-use-the-h5-micro-application-jsapi

里面是这么描述的:

本文档介绍在钉钉小程序内,如何调用钉钉H5微应用的JSAPI。

由于小程序的JSAPI框架继承了H5的所有native plugin,所以基于dingtalk-jsapi框架的JSAPI在小程序内也可以使用。

根据描述看小程序的方法是不完全的,还需要引入H5的方法。
至此困扰了好久的一个问题解决了。不找到这个文档,真不知道还要引入H5的jsapi。

引入方法

文中以uniapp为例

  1. 项目跟目录创建node_modules文件夹
  2. 命令行进入文件夹,运行npm install dingtalk-jsapi --save
  3. App.vue文件script标签内顶部添加import 'dingtalk-jsapi/entry/mobile';
<script>
    import 'dingtalk-jsapi/entry/mobile';
    
    export default {
        onLaunch: function() {
            console.log('App Launch')
        },
        onShow: function() {
            console.log('App Show')
        },
        onHide: function() {
            console.log('App Hide')
        }
    }
</script>

<style>
    /*每个页面公共css */
</style>
  1. 使用某个方法,以locateInMap为例,vue3 <script setup> 标签内引入对应js, 直接使用方法即可。
import locateInMap from 'dingtalk-jsapi/api/biz/map/locate.js';

locateInMap({
                scope: 500,
                success: (res) => {
                    console.log(res)
                    const {
                        snippet,
                        adName,
                        distance,
                        province,
                        city,
                        cityCode,
                        provinceCode,
                        adCode,
                        latitude,
                        postCode,
                        title,
                        longitude,
                    } = res;
                    formParams.endAddress = `${province}${city}${adName}${title}`
                },
                fail: (err) => {
                    console.log('locateInMap失败', err)
                },
                complete: () => {},
            });
最后修改:2024 年 06 月 25 日
如果觉得我的文章对你有用,奖励一杯咖啡吧!