• Stars
    star
    1,031
  • Rank 44,693 (Top 0.9 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于 React 封装的高德地图组件。AMap Component Based On React.

react-amap

Build Status npm version npm downloads

react-amap 是一个基于 React 封装的高德地图组件;帮助你轻松的接入地图到 React 项目中。除了必须引用的 Map 组件外,我们目前提供了最常用的 10 个地图组件,能满足大部分简单的业务场景;如果你有更复杂的需求,或者觉得默认提供的组件功能不够,你完全可以自定义一个地图组件,然后根据高德原生 API 做高德允许你做的一切事情。

最近更新

react-amap 升级到 1.1.1,支持加载 AMapUI 组件库。加载方式参考 Map 组件 关于 加载 AMapUI 组件库 的说明。(2017-11-13)

扩展组件

从版本 1.0.0 开始,react-amap 拥有了组件的扩展能力。如果 react-amap 中已有的组件不能满足你的业务需求,你可以使用自己写的地图组件;

在你的组件中,可以通过 props 访问到创建好的高德地图实例,以及地图的 div 容器;拥有访问这两个属性的能力后,你可以根据高德原生 API 做高德允许你做的一切事情。实际上,react-amap 中的其他组件就是这么做的。文档内容请参考自定义地图组件

目前已有的一些组件:

  1. react-amap-plugin-heatmap,热力图组件。
  2. react-amap-plugin-geolocation,定位组件。
  3. react-amapui-wrapper,可自定义的AMapUI组件。

如果你有写好的组件愿意开源出来的,欢迎提一个 PR 扩展这个列表。

在线实时演示

https://jsfiddle.net/ioslh/h4u8mdng/25/


如何在项目中接入 react-amap;

安装

npm install --save react-amap

npm 用法

<div id="app"></div>
#app {
  width: 600px;
  height: 400px;
}
import React from 'react';
import ReactDOM from 'react-dom';
import { Map } from 'react-amap';

ReactDOM.render(
  <Map amapkey={YOUR_AMAP_KEY} version={VERSION} />,
  document.querySelector('#app')
)

amapkey 说明见下文 version 指定高德地图版本 不填则使用默认值: 1.4.0

也可以手工引入你需要的组件:

import Map from 'react-amap/lib/map';
import Marker from 'react-amap/lib/marker';
// ... your other code

以上为简单场景的应用。 tips: Map 组件的父元素须设置高度和宽度;关于代码中的 Map 组件的 amapkey 属性见下方的说明。

CDN 用法

在 HTML 页面中加入 react-amap 库的 CDN 地址,插件会在 window 下暴露 ReactAMAP 变量。

<script src="path/to/react.js"></script>
<script src="path/to/react-dom.js"></script>
<script src="path/to/dist/react-amap.js"></script>
<script>
  var Map = ReactAMAP.Map;
  var Marker = ReactAMAP.Marker;
  
  var pos = { longitude: 120, latitude: 30 };
  var YourApp = React.createElement(
    Map,
    { center: pos },
    React.createElement(
      Marker,
      { position: pos },
      null
    )
  );
  ReactDOM.render(YourApp, document.getElementById('root'));
</script>
CDN 地址

实际应用中你可以使用下面的 CDN 地址,也可以把脚本下载下来本地部署。

tips: 记得将其中的 VERSION 替换为真实版本号,查看历史版本更新日志

关于 Key

在上面的例子中需要给 Map 组件传入 amapkey 属性,这个是高德地图给开发者分配的开发者 Key;你可以在高德开放平台申请你自己的 Key。

在 react-amap 中 Key 的传入方式有两种:

  • 给 Map 组件传入 amapkey 属性(因为 React 框架本身对 key 属性有其他作用,所以不能用 key,所以我们用 amapkey),这样的缺点是如果多个地方使用就要每次都要传入;
  • 你也可以定义一个纯组件,把 Map 组件的 amapkey 属性写好后返回新组件。
  • 直接把你的 Key 定义在全局变量 window.amapkey 上,react-amap 在调用高德接口时会尝试从这里读取。(不推荐)

组件的使用请移步组件文档

贡献指南

首先感谢你使用 react-amap,react-amap 是一个基于 React 封装的高德地图组件库。

react-amap 的成长离不开大家的支持,如果你愿意为 react-amap 贡献代码或提供建议,请阅读以下内容。

开发

npm install
npm start # http://localhost:9001

Issue 规范

  • issue 仅用于提交 Bug 或 Feature,其它内容可能会被直接关闭。
  • 在提交 issue 之前,请搜索相关内容是否已被提出。
  • 在提交issue时,请说明 react-amap 的版本号,并提供操作系统和浏览器信息。推荐使用 JSFiddle 生成在线 demo,这能够更直观地重现问题。

Pull Request 规范

  • 请先 fork 一份到自己的项目下,不要直接在仓库下建分支。

  • 不要提交 dist 里面打包的文件

  • 提交 PR 前请 rebase,确保 commit 记录的整洁。

  • 如果是修复 bug,请在 PR 中给出描述信息。

  • 合并代码需要两名维护人员参与:一人进行 review 后 approve,另一人再次 review,通过后即可合并。

代码规范

遵循饿了么前端的 ESLint 即可。

License

MIT License

Copyright (c) 2017 ElemeFE

More Repositories

1

element

A Vue.js 2.0 UI Toolkit for Web
Vue
54,115
star
2

mint-ui

Mobile UI elements for Vue.js
Vue
16,570
star
3

node-interview

How to pass the Node.js interview of ElemeFE.
HTML
10,407
star
4

v-charts

基于 Vue2.0 和 ECharts 封装的图表组件📈📊
JavaScript
6,802
star
5

vue-amap

🌍 基于 Vue 2.x 和高德地图的地图组件
JavaScript
3,320
star
6

element-react

Element UI
JavaScript
2,832
star
7

vue-infinite-scroll

An infinite scroll directive for vue.js.
JavaScript
2,828
star
8

page-skeleton-webpack-plugin

Webpack plugin to generate the skeleton page automatically
JavaScript
2,748
star
9

cooking

👨‍🍳 更易上手的前端构建工具
JavaScript
1,948
star
10

node-practice

Node.js 实践教程
JavaScript
1,374
star
11

restc

A server-side middleware to visualize REST requests.
HTML
1,348
star
12

vue-swipe

A touch slider for vue.js.
Vue
929
star
13

vue-desktop

A UI library for building admin panel website.
Vue
550
star
14

element-angular

Element for Angular
TypeScript
522
star
15

hire

寻找热爱生活,把世界变的更好的人
468
star
16

keynote

大前端分享会公开演示文稿
HTML
335
star
17

image-cropper

A image cropper for cropping user avatar, no dependencies.
JavaScript
311
star
18

postcss-salad

沙拉是一个能够帮助你写出更加简洁、优雅的CSS的样式解决方案
CSS
275
star
19

vscode-element-helper

VSCode-Element-Helper is a VS Code package for Element-UI.
TypeScript
240
star
20

smart-gesture

这是一个小型手势组件,支持普通的方向手势和自定义图形手势,兼容PC端和移动端,可以非常方便的用它实现一些酷炫的手势操作。
JavaScript
238
star
21

vue-msgbox

A message box (like Sweet Alert) for vue.js.
JavaScript
236
star
22

bowl

🍚 static resources front-end storage solving strategy
JavaScript
227
star
23

style-guide

style guide for everyone
226
star
24

element-dashboard

element dashboard
Vue
222
star
25

weex-vue-starter-kit

weex starter kit in vue to use weexpack & weex both.(support hot-reload)
JavaScript
179
star
26

obsolete-webpack-plugin

🌈 A Webpack plugin generates a browser-side standalone script that detects browser compatibility based on `Browserslist` and prompts website users to upgrade it.
JavaScript
176
star
27

vue-toast-mobile

A mobile toast plugin for vue.js
HTML
144
star
28

eslint-config-elemefe

JavaScript
136
star
29

vue-img

hash2path wrapper for vue.js
JavaScript
117
star
30

mongodb-doc-cn

Mongodb 中文文档, 在线阅读 ->
101
star
31

Hachart

HaHa, this is a flowchart generator.
JavaScript
92
star
32

vue-popup

A popup mixin for vue.js
JavaScript
77
star
33

element-helper

🚀 Element-Helper is a Atom package for Element-UI.
JavaScript
75
star
34

crayfish

基于 CDN 的配置管理系统
JavaScript
58
star
35

webspoon

这是一个 Web 前端工程化的工具包
JavaScript
45
star
36

random

一个随机分组的小工具
HTML
44
star
37

ng-staticize

Staticize your angular template. Zero watcher and fast as template engine.
JavaScript
38
star
38

v-datepicker

基于Vue指令实现的一个日历选择器控件
Vue
33
star
39

clouding

前端「零机器」部署方案
32
star
40

WAI-ARIA-Practices

ARIA实践指南(中文版)
25
star
41

react-native-smart-gesture

smart-gesture for react-native.
JavaScript
24
star
42

image-cropper-touch

A image cropper for mobile device.
JavaScript
15
star
43

vue-smart-gesture

smart-gesture for vue.
JavaScript
15
star
44

vue-desktop-starter

A starter for vue-desktop.
JavaScript
13
star
45

hasaki

A file generator for easy writing your application.
JavaScript
8
star
46

react-smart-gesture

smart-gesture for react.
JavaScript
7
star
47

appCacheReload

JavaScript
5
star
48

element-migration-helper

CLI tool to aid in migration from Element-UI 1.x to 2.0
JavaScript
3
star
49

snapshot

JavaScript
2
star
50

pocket-noodles

A WEB API CACHING SOLUTION
JavaScript
2
star
51

sip

1
star