干货,无话

1、react-create-app,创建新react项目;

2、npm install react-amap,引入高德地图的封装;

3、编写组件index.js:

import React from "react";
import ReactDOM from "react-dom";
import Map from "./Map3"; let mapData = {
city: "北京",
mapCenter:[116.418261, 39.921984], //城市定位,经纬度定位只能选择1个
mapZoom: 10, //地图缩放
mapKey: '12345678d98aff1166e51962f108bb24', //你的高德key
status: { //是否支持放大拖拽
zoomEnable: true,
dragEnable: true,
},
mapMaker :[ //marker标记点(list)
{lnglat:[116.401728,39.911984],text:'要显示的内容1'},
{lnglat:[116.436691,39.921984],text:'要显示的内容2'}
],
plugins:['ToolBar']
}; ReactDOM.render(
<div style ={{width:"100%",height:"100%"}}>
<Map title="map" mapData={mapData}/>
</div>, document.getElementById("root")
);

  注意render方法内引用了Map组件,因此要编写一个Map3.js,提供这个组件

4、编写Map3.js组件

import React, { Component } from "react";
import { Map, Marker } from 'react-amap';
import ZoomCtrl from './zoom'; class WebMap3 extends Component {
constructor(props) {
super(props);
this.data = props;
//地图事件
this.amapEvents = {
created: (mapInstance) => {
var marker = new AMap.Marker({
// 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
position: new AMap.LngLat(116.39, 39.9),
title: '北京!!'
}); mapInstance.add(marker);
}
}; //点位事件
this.markerEvents = {
click: (markerInstance) => {
this.Position = [markerInstance.lnglat.lng,markerInstance.lnglat.lat];
this.setState({
isShow: true,
});
}
};
} render() {
let {city, mapCenter, mapZoom, mapKey, status, plugins} = this.data.mapData;
return (
<div style ={{width:"100%",height:"95%"}}>
<Map amapkey={mapKey} city={city} zoom={mapZoom} center={mapCenter} status={status} plugins={plugins} events={this.amapEvents}>
{this.data.mapData.mapMaker.map((comment) => (
<Marker position={comment.lnglat} events={this.markerEvents}>
</Marker>
))}
<ZoomCtrl />
</Map>
</div>
);
} } export default WebMap3;

  注意标红部分,会报错

这个是关键! 有两个办法解决,分别见下面的5.1和5.2

5、解决react下找不到原生高德地图AMap类的问题

5.1 方法1

暴力手段,直接搞定。

使用注释    //eslint-disable-next-line  写在每个出现AMap类的前面一行,如下所示

原理是告诉eslint:注释下面这一行您别管。

5.2 方法2

强迫症手段,分为3步。

5.1.1 在项目根目录下新加.eslintrc.js文件,把AMap变量放到globals集合里面

module.exports = {
"env": {
"browser": true,
"es6": true
},
// 脚本在执行期间访问的额外的全局变量
// 当访问未定义的变量时,no-undef 规则将发出警告。
// 如果你想在一个文件里使用全局变量,推荐你定义这些全局变量,这样 ESLint 就不会发出警告了。
// 你可以使用注释或在配置文件中定义全局变量
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly",
"AMap":true,
"window":true,
"document":true,
},
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"semi": ["error","always"],
}
};  

注意红色部分代码表示:AMap是个全局变量,是webpack我罩着的,保证能用,eslint你别管。

当然,webpack.config.js要做点修改,以支持我们刚写的.eslintrc.js文件。可是react-create-app生成的项目的webpack.config.js不好找啊,也能找到:

5.2.2 修改 node_modules\react-scripts\config\webpack.config.js文件

在这个文件搜索字符串 useEslintrc, 大概在webpack.config.js文件的第326行,把 useEslintrc: false,  改成 useEslintrc: true, 然后保存。如下所示:

5.2.3 完工

6 验收

在控制台运行npm start,然后访问http://localhost:3000,出现下图表示OK!

7 总结

此方法适用于在react中调用jquery、百度地图、高德地图、OpenLayer、echart等等使用ES5编写的各类控件库。

react中使用高德地图的原生API的更多相关文章

  1. React中使用百度地图API

    今天我们来搞一搞如何在React中使用百度地图API好吧,最近忙的头皮发麻,感觉身体被掏空,所以很久都没来写博客了,但今天我一定要来一篇好吧 话不多说,我们直接开始好吧 特别注意:该React项目是用 ...

  2. Android 编程 AMapLocationClientOption 类中的 setNeedAddress 方法用处 (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)

    最近在用高德地图来写Android App, 其中有一些 方法是不太理解的,这里写一下 对  高德地图  com.amap.api.location.AMapLocationClientOption ...

  3. 基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中。

    react-amap 这是一个基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中. 文档实例预览: Github Web | Gitee Web 特性 ️ 自动加载高德地 ...

  4. Ionic2系列——在Ionic2中使用高德地图

    之前讲过了如何在Ionic2中使用第三方库,因为第三方库必须针对TypeScript提供相应的声明文件——即d.ts文件,才能被TypeScript正确识别并编译.好在大多数的第三方库已经有了定义文件 ...

  5. Vue-Cli 3.0 中配置高德地图

    vue 中使用高德地图有两种方式 一.vue-amap 组件 官网: https://elemefe.github.io/vue-amap/#/ 开始的时候是打算用这个组件做地图功能的,但是尝试之后存 ...

  6. Vue组件篇——Vue3.0中使用高德地图

    VUE-CLI 3.0 中配置高德地图 在项目开发中,地图组件 1.首先,需要注册高德开放平台的账号,并在[应用管理]页面[创建新应用],为应用添加Key值 高德开放平台:https://lbs.am ...

  7. Android 编程 AMapLocationClientOption 类中的 setMockEnable (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)

    setMockEnable 高德地图中 AMapLocationClientOption 中有一个方法是设置APP是否接受模拟定位的设置,就是方法 setMockEnable //设置是否允许模拟位置 ...

  8. reactjs中使用高德地图计算两个经纬度之间的距离

    第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...

  9. vue-cli2.X中引入高德地图,将其设为全局对象

    平时一般未用脚手架构建或用webpack构建的项目只要用script标签引入即可,在vue-cli 2.X构建的项目中,需要用如下方式引入高德地图: 首先在高德地图开放平台中注册开发者账号并获取key ...

随机推荐

  1. 发布与订阅SQLServer

    SQLServer 中发布与订阅 在对数据库做迁移的时候,会有很多方法,用存储过程,job,也可以用开源工具lettle,那么今天这些天变接触到了一种新的方法,就是SqlServer中自带的发布与订阅 ...

  2. 恩布拉科业务IM 1.8 版本号,内部沟通软件

    恩布拉科业务IM,开源企业IM,免费企业即时通讯,内部沟通平台,Entboost通告v1.8版本号,主要版本更新: 管理中心添加系统监控.集群管理二大功能模块:添加云盘空间.离线消息.文件大小等參数配 ...

  3. mysql中常见的存储引擎和索引类型

    存储引擎 1.      定义 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类 ...

  4. [C/C++]_[VS2010使用源代码UTF8中国字符串转码ANSI问题]

    场景: 1.思想vs设置源文件UTF8编码,的代码串中国出现在它必须是utf8编码.不幸的是没有,假设源代码出现在中国字符串,在内存公交码ANSI编码. Unicode(UTF8) 代码页(65001 ...

  5. 相关web 片段记录安全性研究(不时更新)

    一.有关html/css, js, php, cgi 的一些认识 当我们浏览器訪问一个网站的静态文件.会把文件内容都下载下来(一般压缩).当然假设遇到外联的css/js,会再发起请求得 到.假设我们右 ...

  6. 局部QEventLoop帮助QWidget不消失(也就是有一个局部事件循环始终在运行,导致程序被卡住那里,但仍可以接受事件。说白了就是有一个while语句死活不肯退出,直到收到退出信号)

    熟悉的陌生人 Qt 是事件驱动的,所以当你用Qt的时候,几乎时时刻刻和 QEventLoop 打交道.,只是你可能没有意识到: QCoreApplicaton::exec() QApplication ...

  7. The bundle does not contain an app icon for iPhone / iPod Touch of exactly &#39;120x120&#39; pixels, in .pn

    xcode 6.3 载发生时的应用'Missing recommended icon file - The bundle does not contain an app icon for iPhone ...

  8. ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 视图 花了几章节,终于把 ASP.NET Core MVC 中的 C 控 ...

  9. 受限玻尔兹曼机(RBM)以及对比散度(CD)

    1. RBM 的提出 BM 的缺点: 计算时间漫长,尤其是无约束自由迭代的负向阶段: 对抽样噪音敏感: 流行软件的不支持: 受限玻尔兹曼机(Restricted Boltzmann Machine,简 ...

  10. DNS查询工具:host、nslookup、dig

    作者:zhanhailiang 日期:2014-11-01 1. host host提供域名到IP地址的双向解析: host默认通过/etc/resolv.conf读取Name Server来解析,除 ...