@2plgiap/react-leaflet-markercluster 中文文档教程
React leaflet markercluster
反应包装器Leaflet.markercluster 的 对于 react-leaflet
文档示例: https://yuzhva.github.io/react-leaflet-markercluster/
CodeSandbox 入门
Description
如果您遇到以下问题地图缩放期间标记重叠,或者它们是 重叠是因为它们彼此靠近 - 您可能需要将它们分组。
这就是你可以用 react-leaflet-markercluster 做的。
只需在
组件中抓住你的标记,就在
之后:
import MarkerClusterGroup from 'react-leaflet-markercluster';
<MarkerClusterGroup>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MarkerClusterGroup>;
注意:在开始之前,请参阅这些有用的指南:
Table of Contents
Getting started
1. 安装包:
yarn add react-leaflet-markercluster@next # yarn
npm install react-leaflet-markercluster # npm
注意 @next
是 react-leaflet v3 所必需的支持。 如果您仍在使用 react-leaflet v3,请将依赖项添加为 react-leaflet-markercluster@^2.xx
react-leaflet-markercluster
需要 leaflet.markercluster
as peerDependency
(Leaflet 和 react-leaflet 也应该是安装)
yarn add leaflet.markercluster leaflet react-leaflet # yarn
npm install leaflet.markercluster leaflet react-leaflet # npm
2. 导入markercluster 和leaflet 样式:
@import '~leaflet/dist/leaflet.css'; // sass
@import '~react-leaflet-markercluster/dist/styles.min.css'; // sass
require('~leaflet/dist/leaflet.css'); // inside .js file
require('react-leaflet-markercluster/dist/styles.min.css'); // inside .js file
或者直接将CSS 样式包含到HTML 文件的头部:
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<link
rel="stylesheet"
href="https://unpkg.com/react-leaflet-markercluster/dist/styles.min.css"
/>
3. 写一些简单的 react-leaflet
地图:
import { MapContainer, TileLayer, Marker } from 'react-leaflet';
<MapContainer
className="markercluster-map"
center={[51.0, 19.0]}
zoom={4}
maxZoom={18}
>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
/>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MapContainer>;
注意: 记得添加地图样式 .markercluster-map { height: 90vh; }。
4. 只需在
组件中抓住你的标记,就在
之后:
import MarkerClusterGroup from 'react-leaflet-markercluster';
<MarkerClusterGroup>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MarkerClusterGroup>;
API
只需从 所有 Leaflet.markercluster 选项 到 MarkerClusterGroup
作为 prop
。
例如:
<MarkerClusterGroup showCoverageOnHover={false} />
或:
const createClusterCustomIcon = function (cluster) {
return L.divIcon({
html: `<span>${cluster.getChildCount()}</span>`,
className: 'marker-cluster-custom',
iconSize: L.point(40, 40, true),
});
}
<MarkerClusterGroup iconCreateFunction={createClusterCustomIcon} />
PS:v1 的示例可在 CHANGELOG.md 中找到
Event listeners
您可以使用简单的 on
属性前缀。
How to run DEV env
1. 克隆 repo:
git clone https://github.com/YUzhva/react-leaflet-markercluster.git
2. 安装所有依赖项:
yarn install --no-lockfile # yarn
npm install # npm
3. 启动服务器:
yarn dev # yarn
npm run dev # npm
4. 启动后服务器,storybook 应该会自动打开以下地址:
http://localhost:8080/
Contributors ✨
感谢这些优秀的人: 由 contributors-img 渲染的头像。
特别感谢:
Contributing
所有源都放在 ./src
文件夹中:
1. 分叉 repo。
2. 编辑react-leaflet-markercluster.js
插件或style.scss
样式文件。
3.提交您的更改并打开合并请求。
:beer: 感谢您的贡献 :beer:
UMD
UMD 构建可在 unpkg 上获得:
<!-- unpkg, production code (minified) -->
<script src="https://unpkg.com/react-leaflet-markercluster/dist/index.js"></script>
<!-- unpkg, development code -->
<script src="https://unpkg.com/react-leaflet-markercluster/src/react-leaflet-markercluster.js"></script>
<!-- unpkg, production styles (minified) -->
<link
rel="stylesheet"
type="text/css"
href="https://unpkg.com/react-leaflet-markercluster/dist/styles.min.css"
/>
<!-- unpkg, development styles -->
<link
rel="stylesheet"
type="text/css"
href="https://unpkg.com/react-leaflet-markercluster/src/styles.scss"
/>
License
MIT 许可证,请参阅 许可证 文件。
React leaflet markercluster
React wrapper of Leaflet.markercluster for react-leaflet
Examples with the Documentation: https://yuzhva.github.io/react-leaflet-markercluster/
CodeSandbox Getting Started
Description
If you are faced with an issue with markers overlapping during map zooming, or they are overlapping because they are close to each other - you probably need to group them.
That is what you can do with react-leaflet-markercluster.
Just grab your markers inside <MarkerClusterGroup />
component, right after <TileLayer />
:
import MarkerClusterGroup from 'react-leaflet-markercluster';
<MarkerClusterGroup>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MarkerClusterGroup>;
Note: Before getting started, please see these useful guides:
Table of Contents
Getting started
1. Install package:
yarn add react-leaflet-markercluster@next # yarn
npm install react-leaflet-markercluster # npm
NOTE: the @next
is required for react-leaflet v3 support. If you are still using react-leaflet v3, add dependency as react-leaflet-markercluster@^2.x.x
The react-leaflet-markercluster
requires leaflet.markercluster
as peerDependency
(Leaflet and react-leaflet also should be installed)
yarn add leaflet.markercluster leaflet react-leaflet # yarn
npm install leaflet.markercluster leaflet react-leaflet # npm
2. Import markercluster and leaflet styles:
@import '~leaflet/dist/leaflet.css'; // sass
@import '~react-leaflet-markercluster/dist/styles.min.css'; // sass
require('~leaflet/dist/leaflet.css'); // inside .js file
require('react-leaflet-markercluster/dist/styles.min.css'); // inside .js file
Or include CSS styles directly to the head of HTML file:
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<link
rel="stylesheet"
href="https://unpkg.com/react-leaflet-markercluster/dist/styles.min.css"
/>
3. Write some simple react-leaflet
Map:
import { MapContainer, TileLayer, Marker } from 'react-leaflet';
<MapContainer
className="markercluster-map"
center={[51.0, 19.0]}
zoom={4}
maxZoom={18}
>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
/>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MapContainer>;
NOTE: Remember to add map styles .markercluster-map { height: 90vh; }
.
4. Just grab your markers inside <MarkerClusterGroup />
component, right after <TileLayer />
:
import MarkerClusterGroup from 'react-leaflet-markercluster';
<MarkerClusterGroup>
<Marker position={[49.8397, 24.0297]} />
<Marker position={[52.2297, 21.0122]} />
<Marker position={[51.5074, -0.0901]} />
</MarkerClusterGroup>;
More examples with the Documentation
CodeSandbox Getting Started
API
Just pass whatever option you need from All Leaflet.markercluster Options to MarkerClusterGroup
as prop
.
For example:
<MarkerClusterGroup showCoverageOnHover={false} />
or:
const createClusterCustomIcon = function (cluster) {
return L.divIcon({
html: `<span>${cluster.getChildCount()}</span>`,
className: 'marker-cluster-custom',
iconSize: L.point(40, 40, true),
});
}
<MarkerClusterGroup iconCreateFunction={createClusterCustomIcon} />
P.S: Examples for v1 are available at CHANGELOG.md
Event listeners
You are able to add any listener, supported by Leaflet, with simple on
property prefix.
How to run DEV env
1. Clone the repo:
git clone https://github.com/YUzhva/react-leaflet-markercluster.git
2. Install all dependencies:
yarn install --no-lockfile # yarn
npm install # npm
3. Start the server:
yarn dev # yarn
npm run dev # npm
4. After starting the server, storybook should automatically open the following address:
http://localhost:8080/
Contributors ✨
Thanks goes to these wonderful people: Avatars rendered by contributors-img.
Special thanks to:
Contributing
All sources are placed in the ./src
folder:
1. Fork the repo.
2. Edit react-leaflet-markercluster.js
plugin or style.scss
style files.
3. Commit your changes and open Pull Request.
:beer: Thank you for contribution :beer:
UMD
UMD builds are available on unpkg:
<!-- unpkg, production code (minified) -->
<script src="https://unpkg.com/react-leaflet-markercluster/dist/index.js"></script>
<!-- unpkg, development code -->
<script src="https://unpkg.com/react-leaflet-markercluster/src/react-leaflet-markercluster.js"></script>
<!-- unpkg, production styles (minified) -->
<link
rel="stylesheet"
type="text/css"
href="https://unpkg.com/react-leaflet-markercluster/dist/styles.min.css"
/>
<!-- unpkg, development styles -->
<link
rel="stylesheet"
type="text/css"
href="https://unpkg.com/react-leaflet-markercluster/src/styles.scss"
/>
License
MIT License, see LICENSE file.