示例中心
功能在线体验
menu 导航 closed 关闭
您现在的位置: 开发 > 地图 JS API v2.0 > 教程 > 入门 > JSAPI 的加载 >

高德 开发 地图 JS API v2.0 教程 入门 JSAPI 的加载

更新时间:2020年03月31日

JS API 2.0 版本提供了两种方案引入地图 JSAPI:

1. 使用官网提供的 JSAPI Loader 进行加载;

2. 以常规 JavaScript 脚本的方式加载;

使用 JSAPI Loader (推荐)

JSAPI Loader是我们提供的 API 加载器,可帮助开发者快速定位、有效避免加载引用地图 JSAPI 各种错误用法,具有以下特性:

  • 支持以 普通JS 和 npm包 两种方式使用;
  • 有效避免错误异步加载导致的 JSAPI 资源加载不完整问题;
  • 对于加载混用多个版本 JSAPI 的错误用法给予报错处理;
  • 对于不合法加载引用 JSAPI 给予报错处理;
  • 支持指定 JSAPI 版本;
  • 支持插件加载;
  • 允许多次执行加载操作,网络资源不会重复请求,便于大型工程模块管理;
  • 支持IE9以上的浏览器,不支持IE8以下

按普通 JS 方式使用 Loader

<script data-src="https://webapi.amap.com/loader.js"></script>
<script type="text/javascript" >
    AMapLoader.load({
        key:'您申请的key值', //首次调用load必须填写key
        version:'2.0',     //JSAPI 版本号
        plugins:['AMap.Scale']  //同步加载的插件列表
    }).then((AMap)=>{
        var map = new AMap.Map('container');
        map.addControl(new AMap.Scale())
    }).catch((e)=>{
        console.error(e);  //加载错误提示
    });   
</script>

按 NPM 方式使用 Loader

安装:

tnpm i @amap/amap-jsapi-loader --save-dev

使用:

import AMapLoader from '@amap/amap-jsapi-loader';

AMapLoader.load({
    "key": "您申请的key值",   // 申请好的Web端开发者Key,首次调用 load 时必填
    "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    "plugins": []  //插件列表
}).then((AMap)=>{
    map = new AMap.Map('container');
}).catch(e => {
    console.log(e);
})


直接加载 JSAPI 脚本

同步加载

同步加载指直接将 JSAPI 的的script标签写入html中,然后在之后的脚本中调用 JSAPI 的相关接口的使用方式

<div id='container' ></div>
<script src = 'https://webapi.amap.com/maps?v=2.0&key=您申请的key值'></script>
<script type="text/javascript" >
    // 地图初始化应该在地图容器div已经添加到DOM树之后
    var map = new AMap.Map('container',{
      zoom:12
    })
</script>

异步加载(特别注意)

异步加载指的是通过appendChild将 JSAPI 的script标签添加到页面中,或者给script标签添加了async属性的使用方式。这种使用场景下,JSAPI不会阻塞页面其他内容的执行和解析,但是 JSAPI 的脚本解析将有可能发生其他脚本资源执行之后,因为需要特别处理,以保证在AMap对象完整生成之后再调用 JSAPI 的相关接口,否则有可能报错。

注意:异步回调函数的声明应该在 JSAPI 引入之前

// 声明异步加载回调函数
window.onLoad  = function(){ 
    var map = new AMap.Map('container');
}
var url = 'https://webapi.amap.com/maps?v=2.0&key=您申请的key值&callback=onLoad';
var jsapi = document.createElement('script');
jsapi.charset = 'utf-8';
jsapi.src = url;
document.head.appendChild(jsapi);

async

// 声明异步加载回调函数
<sctipt  type="text/javascript" >
window.onLoad  = function(){ 
    var map = new AMap.Map('container');
}
</script>
<script data-src="https://webapi.amap.com/maps?v=2.0&key=您申请的key值&callback=onLoad" async="async"  type="text/javascript" ></script>


新用户
福利
示例
中心
常见
问题