前言
在我们平时的开发需求中,或多或少会遇到一些需要用到地图的地方。因此即小程序之后,我有拓展了以下React的Umi框架中使用高德地图。
地址
1、高德开发平台地图js API指南
相关文章
微信小程序中使用高德sdk
提示:以下是本篇文章正文内容,下面案例可供参考
效果展示
这里是一个卫星与网络图层。这里对图层不理解的请到官网中查看。
高德公众平台,图层文档地址
一、准备阶段
注册与申请key
1、在高德开放平台注册成为开发者
2. 登陆之后,在进入「应用管理」 页面「创建新应用」
3. 为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」
准备页面阶段
这里主要使用Umi2.0版本做演示。
第一种写法
1、在Umi创建的项目中,在pages中添加document.ejs
文件并粘贴下面代码到document.ejs
文件上。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>地图系统</title>
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=你自己的key"></script>
</head>
<body>
<noscript>Sorry, we need js to run correctly!</noscript>
<div id="root"></div>
</body>
</html>
注意:在上述代码中填写自己申请的key
2、找到需要使用地图的组件,在这里我们的是map组件,打开map组件。
import React from 'react'
import './map.less'
import AMap from 'AMap'
class map extends React.Component {
constructor(props) {
super(props)
this.state = {
data: []
}
}
componentDidMount(){
var map = new AMap.Map('container',{
zoom: 11,
viewMode:'3D',//使用3D视图
layers: [//使用多个图层
new AMap.TileLayer.Satellite(),
new AMap.TileLayer.RoadNet()
]
});
}
render() {
return (
<div>
<div style={
{
width:'100%',height:500}} id="container"></div>
</div>
);
}
}
export default map
到这里他会出现了个问题,说找不到AMap这个包。这里给大家分析以下
我们可以看到我们是在document.ejs的head中使用引入高德的api的,并没有通过npm安装。所以这里我们需要做如下配置。
- 在根路径下找到
.umirc.js
这个文件- 在其中添加如下代码即可
externals:{ 'AMap':'window.AMap' },
到这里我们看到页面上以及出现了地图了。
第二种写法(开发常用)
这里还有一种高逼格的写法。平时开发经常会用在的方法。
1、创建
在src路径下,创建一个plugins文件夹,在文件夹创建GdMapPlugin.js。文件代码如下:
export default (api) => {
api.addHTMLHeadScript({
type: "text/javascript",
src: 'https://webapi.amap.com/maps?v=1.4.9&key=你的key',
});
};
2、进行配置
到这里我们需要去配置文件.umirc.js文件中进行如下配置。
- 在根路径下找到
.umirc.js
这个文件- 在导出对象中添加如下代码
externals: { 'AMap': 'window.AMap' },
- 并在plugins中其中添加如下代码即可
[ './src/plugin/GdMapPlugin.js' ]
3、使用
到你需要使用地图的组件中。我的代码如下。
import React from 'react'
import './map.less'
import AMap from 'AMap'
class map extends React.Component {
constructor(props) {
super(props)
this.state = {
data: []
}
}
componentDidMount(){
var map = new AMap.Map('container',{
zoom: 11,
viewMode:'3D',//使用3D视图
layers: [//使用多个图层
new AMap.TileLayer.Satellite(),
new AMap.TileLayer.RoadNet()
]
});
}
render() {
return (
<div>
<div style={
{
width:'100%',height:500}} id="container"></div>
</div>
);
}
}
export default map
就可以了。
总结
对于详细内容,我会在后续的学习中通过博客分享出来。如果等不及的小伙伴可以去官方平台逛一逛。