更新记录

1.0.3(2021-12-24) 下载此版本

使用文档更新

1.0.1(2021-12-24) 下载此版本

使用文档更新

1.0.0(2021-12-24) 下载此版本

微信小程序高德地图逆编码处理,两经纬度位置距离计算

查看更多

平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

zm-amap

前言

Tips:

1、uniapp关于获取位置文档 文档中表述:在小程序平台,api默认不返回详细地址中文描述(即逆地理编码)。推荐使用高德地图小程序sdk,在app和微信上都可以获得中文地址。

2、位置接口增加频率限制

当前小程序频繁调用wx.getLocation接口会导致用户手机电量消耗较快,请开发者改为使用持续定位接口wx.onLocationChange,该接口会固定频率回调,使用效果与跟频繁调用getLocation一致。 从基础库2.17.0版本起(预计发布时间2021.4.9),将对getLocation接口增加频率限制,包括:

  • 1、在开发版或体验版中,30秒内调用getLocation,仅第一次有效,剩余返回fail。
  • 2、正式版中,为保证小程序正常运行同时不过度消耗用户电量,一定时间内(根据设备情况判断)调用getLocation,仅第一次会返回实时定位信息,剩余返回与第一次定位相同的信息。 个人补充: 1、sdk方法的调用时间间隔10s内会报错,超过则不报错。

Tips:

1、地图POI:某个地理位置周边的信息


二、插件使用步骤

1、导入方式

  • 1、使用HBuilderX导入插件
  • 2、下载插件ZIP
  • 3、node 导入
  • 3.1、在【package.json】文件中添加导入配置
    "dependencies": {
    "cm-amap": "^1.0.3"
    }
  • 3.2、打开项目中的终端,输入:
    npm install
  • 3.3、下载成功后在【node_modules】中显示

2、插件引用

Tips: 推荐npm引用

2.1、uni_modules引用

import {
        zmRegeo,
        zmWeather,
        zmCalculateDistance,
    } from '@/uni_modules/cm-amap/index.js'

2.2、npm引用

import {
        zmRegeo,
        zmWeather,
        zmCalculateDistance,
    } from 'cm-amap/index.js'
  • 插件ZIP下载导入项目,使用的时候,除了注册引用的路径不一致,其他全部一致

3、方法使用

        methods: {
            zmRegeo,
            zmWeather,
            zmCalculateDistance,
            async regeoClick() {
                this.geoData = (await this.zmRegeo())[0];
                console.log("this.geoData: " + JSON.stringify(this.geoData));
            },

            async weatherClick() {
                let _da = await this.zmWeather();
                for (const key in _da) {
                    console.log(key);
                    if (key !== 'liveData') {
                        this.weather.data.push({
                            name: 'div',
                            children: [{
                                type: 'text',
                                text: _da[key].text + ':' + _da[key].data
                            }]
                        });
                    }
                }
                this.weather.hasData = true
                console.log("_da: " + JSON.stringify(_da));
            },

            // 距离计算
            calDis () {
                var __dis = this.zmCalculateDistance(24.445676, 118.082745, 24.445676, 118.082545)
                console.log("__dis:", __dis+"米");
            }

        },


三、高德地图小程序sdk使用步骤

1、在高德开放平台,注册账号并申请 key 等相关信息;

2、下载微信小程序SDK

3、导入SDK并使用

// 引入SDK
import amap from '../../common/amap-wx.js';  

export default {  
    data() {  
        return {  
            amapPlugin: null,  //sdk对象 
            key: '高德key',  
            addressName: '',  
            weather: {  
                hasData: false,  
                data: []  
            }  
        }  
    },  
    onLoad() {
        // 初始化实例对象
        this.amapPlugin = new amap.AMapWX({  
            key: this.key  
        });  
    },  
    methods: {  
        // 获取地理位置信息
        getRegeo() {  
            uni.showLoading({  
                title: '获取信息中'  
            });  
            this.amapPlugin.getRegeo({  
                success: (data) => {  
                    console.log(data)  
                    this.addressName = data[0].name;  
                    uni.hideLoading();  
                }  
            });  
        },
        getWeather() {
                uni.showLoading({
                    title: '获取信息中'
                });
                this.amapPlugin.getWeather({
                    success: (data) => {
                        console.log(data);
                        for (const key in data) {
                            console.log(key);
                            if (key !== 'liveData') {
                                this.weather.data.push({
                                    name: 'div',
                                    children: [{
                                        type: 'text',
                                        text: data[key].text + ':' + data[key].data
                                    }]
                                });
                            }
                        }
                        uni.hideLoading();
                        this.weather.hasData = true;
                    }
                });
            }
    }  
}

参考:uni-app中使用微信小程序第三方 SDK 及资源汇总

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问