> 本例采用高德地图,其他地图类型
* [获取高德应用key](https://www.kancloud.cn/wangking/uniapp/1883746#key_2)
* [下载高德微信小程序sdk](https://www.kancloud.cn/wangking/uniapp/1883746#sdk_7)
* [示例代码](https://www.kancloud.cn/wangking/uniapp/1883746#_14)
## 获取高德应用key
> key 绑定的服务类型选择:微信小程序
> 注册、登录入口:[https://lbs.amap.com/](https://lbs.amap.com/)
> ![](https://img.kancloud.cn/f6/9e/f69ec320acfe62042f1c36eb9e4ccdd6_1917x505.png)
## 下载高德微信小程序sdk
> 微信小程序sdk,可兼容APP端
> 下载地址:[https://lbs.amap.com/api/wx/download](https://lbs.amap.com/api/wx/download)
![](https://img.kancloud.cn/5a/21/5a2138e71d80ae40f87954852340fe75_363x140.png)
## 示例代码
~~~
<template>
<view>
<map :latitude="latitude" :longitude="longitude" style="width: 100%;height: 1500rpx;" scale="11" :markers="markers" :show-location="true" @markertap="markertap" @updated="mapUpdated" @tap="closeMapMarker"></map>
</view>
</template>
<script>
import amap from "../../static/js/amap-wx.js";
export default {
data() {
return {
//
longitude: 104.063402,
latitude: 30.568744,
mapInfo: [],
markers: [],
mapKey: "a5e74ea2902fe2ea2eb45vd8798c27cb"
}
},
created() {
console.log("created=============map")
},
onLoad() {
console.log("onLoad---");
//
this.amapPlugin = new amap.AMapWX({
key: this.mapKey //该key 是在高德中申请的微信小程序key
});
// 例子1:调用高德API获取当前地理位置
// 参考API:https://lbs.amap.com/api/wx/reference/core
const that = this
that.amapPlugin.getRegeo({
type: "gcj02", //map 组件使用的经纬度是国测局坐标, type 为 gcj02
success: function(res) {
console.log("map 组件使用的经纬度是国测局坐标, type 为 gcj02")
console.log("当前用户位置:"+res[0].name+",坐标:"+res[0].longitude+","+res[0].latitude);
console.log(res[0])
const latitude = res[0].latitude;
const longitude = res[0].longitude;
that.longitude = longitude;
that.latitude = latitude;
that.mapInfo=res[0];
},
fail: (res) => {
console.log(JSON.stringify(res));
}
});
// 例子2:调用高德API获取当前地理位置
// 参考API:https://lbs.amap.com/api/wx/reference/core
uni.getLocation({
type: 'wgs84',
success: (res) => {
that.latitude = res.latitude;
that.longitude = res.longitude;
},
fail: (err) => {
uni.showToast({title: "获取失败"})
},
})
that.amapPlugin.getRegeo({
location: '' + that.longitude + ',' + that.latitude + '', //location的格式为'经度,纬度'
success: function (e) {
let city= e[0].regeocodeData.addressComponent.city; //城市
let province= e[0].regeocodeData.addressComponent.province; //省份
console.log(e[0].regeocodeData.addressComponent);
console.log("根据坐标("+that.longitude+","+that.latitude+")获取到相关信息:province"+province+",city"+city)
},
fail: function (info) {
console.log("失败");
},
});
// 增加地图标注
this.mapMarkers()
},
onShow() {
console.log("show")
},
methods:{
mapMarkers(){
console.log("markers")
this.markers = [
{
id:1001,
longitude: '104.063402',
latitude: "30.568744",
title: "车享汇加油站",
// iconPath: "http://api.myphp.vip/logo.png",
iconPath: "/static/logo.png",
width: "73rpx",
height: "87rpx",
callout: {
content: "中国石化加油站 686m",
color: "#9bf",
fontSize: "30rpx",
bgColor: "red",
padding: "30rpx",
},
label: {
content: "中国石化加油站 686m",
color:"#fff",
padding: "10",
textAlign: "center",
borderColor: "red",
bgColor: "#ccc",
x: "350px",
y: "0",
opacity:"0.4"
}
}
]
},
// 点击标记时触发
markertap(){
console.log("markertap点击标记时触发")
},
//mapUpdated
mapUpdated(){
console.log("mapUpdated----------在地图渲染更新完成时触发")
},
// 点击非marker的地图部位,会隐藏之前弹出的marker信息
closeMapMarker(){
console.log("closeMapMarker----------点击地图时触发; App-nuve、微信小程序2.9支持返回经纬度")
}
}
}
</script>
~~~
相关文档:
> [https://uniapp.dcloud.io/component/map](https://uniapp.dcloud.io/component/map)
> [https://uniapp.dcloud.io/api/location/map?id=createmapcontext](https://uniapp.dcloud.io/api/location/map?id=createmapcontext)
- 基础知识
- UNI核心介绍
- flex布局
- 生命周期
- 全局方法
- 组件定义
- 自定义组件
- 全局组件
- 组件之间的数据传输
- 条件编译
- 自定义头部
- 节点信息 (SelectorQuery)
- vuejs基础语法
- 页面跳转以及参数传递
- 事件的监听注册以及触发
- css3动画
- block的妙用
- mixin (混入)
- uniapp快捷键
- vuex状态管理
- 实用功能
- 获取服务提供商
- 启动页 / 启动界面
- 引导页
- tabbar配置
- 头部导航栏基础设置
- 上拉下拉(刷新/加载)
- 第三方登录
- 第三方分享
- 推送通知 之 unipush
- scroll-view双联动
- 配置iOS通用链接(Universal Links)
- 本地缓存操作
- 升级/更新方案
- 热更新
- 图片上传
- 搜索页实现
- canvas绘图助手
- 地图定位
- 第三方支付————todo
- 分类轮播
- 清除应用缓存
- uniapp与webview的实时通讯
- 视频-----todo
- 聊天----todo
- 长列表swiper左右切换
- 第三方插件
- uview
- mescroll
- uCharts (图表)
- 无名 (更新插件)
- 第三方模版
- 自定义基座
- 打包发行
- 要封装的方法
- 缓存 cache.js
- 请求接口 request.js
- 工具类 util.js
- 小程序登录 xcxLogin.js
- 版本更新 update.js
- 优质插件
- 更新插件----todo
- 语音
- 语音识别 (含上传)
- 百度语音合成播报接口
- 官方常用组建
- input 输入框
- image 图片
- audio 音频
- picker 选择器
- video 视频
- scroll-view 滚动视图
- uni-app 地图全解析+事件监听