uniappH5中使用高德API

1 篇文章 0 订阅

高德的API有现成的SDK支撑安卓/IOS  但是没有专门的API支撑H5(或者说不用专门支撑)

当uniapp中调用高德API的时候就会遇到问题:

因为直接用<sctipt>引入外部js肯定不行了

所以为了解决这个问题就必须引入在线jsAPI

下面就介绍步骤

1.引入在线jsAPI   专门新建个工具类,这样当需要调用地图的时候直接引用该方法就行

a.直接引用js肯定不行,所以采用回调函数的方式引入

b.因为高德的API是异步的,所以我们把他封装成Promise函数

export default function MapLoader() {
  return new Promise((resolve, reject) => {
    if (window.AMap) {
      resolve(window.AMap);
    } else {
		var script = document.createElement('script');
		 script.type = "text/javascript";
		 script.async = true;
		script.src = "https://webapi.amap.com/maps?v=1.4.15&key=你的key&callback=initAMap";
		script.onerror = reject;
		  document.head.appendChild(script);
    }
    window.initAMap  = () => {
      resolve(window.AMap);
    };
  });
}

注意:key值换成自己的哈

2.引入工具类

import AMap from "../util/AMap.js"

3.加载API

return {
				 map: null,
				 resAmap:null,
				 scrollH:500,
				 scrollW:500,
				 initLat:39.913423,//初始维度
				 initLng:116.368904,//初始经度
				
			}
onLoad() {
			 this.initAMap();
		},
async initAMap() {
					  try {
						  this.resAmap=await AMap();
						  this.$nextTick(function(){
						   
						  	var map = new this.resAmap.Map('map', {
						  		   center:[this.initLng,this.initLat],
						  		   zoom:13
						  		});
						   this.map=map;
						  
						  })
						}catch(e){
							console.log(e)
						}
					},

最重要的事情是一定要将调用方法放到$nextTick中,因为这样才能保证完全请求完成才调用(具体原因参见Vue)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值