react 在高德地图上绘制直线

环境说明

  • react-create-app 搭建的前端框架。
  • react-amap 的使用,一个基于高德地图的组件。

react-amap示例中提供了Polyline的使用方法,直接在<Map>组件内使用。
具体参考:https://elemefe.github.io/react-amap/components/polyline
如果只是静态的呈现一条直线,示例这种写法足够满足需求。

因为后续我需要根据后端的数据对直线进行调整,所以打算将绘制直线作为一个单独的组件出现。

自定义地图组件

react-amap说:

我们会给 Map 组件的所有子组件注入两个属性:地图实例,…;在你的组件内部,你可以: 通过 props__map__ 属性访问创建好的高德地图实例;…

这就是我改用高德地图的原因,没找到使用百度地图API的解决办法。

实现

//App.js
import React, { Component } from 'react';
import { Map } from 'react-amap';
import  Lines  from './component/map/Lines'
import './App.css';

export default class App extends Component {
  render() {
    return (
      <div className="App">

        <别的组件/>

        <div style = {{width:'100%',height:'800px'}}>
          <Map 
            amapkey = {'高德地图Key'}
            zoom = {5}
          >
            <Lines />
          </Map>
        </div>
      </div>
    )
  }
}

自定义组件如下:

import React, { Component } from 'react';
// import {Map, Polyline } from 'react-amap';

class Lines extends Component {
    constructor( props ){
        super( props );
        this.mymap = props.__map__;
        this.polylinePath = [
            new window.AMap.LngLat(116.41, 39.93),
            new window.AMap.LngLat(100.43, 39.91)
        ];
    }
    componentDidMount(){
        //eslint-disable-next-line
        var line = new window.AMap.Polyline({path:this.polylinePath});
        this.mymap.add(line);
        //主要就是靠上边这两句!
    }
    render() {
        return (
            null
        )
    }
}

export default Lines;



// 函数式组件的写法
// const Lines = (props,ref)=>{
//     var polylinePath = [
//         new window.AMap.LngLat(116.41, 39.93),
//         new window.AMap.LngLat(100.43, 39.91)
//     ];
//     const mymap = props.__map__;
//     //eslint-disable-next-line
//     var line = new window.AMap.Polyline({path: polylinePath});
//     mymap.add(line);
//     return(null);
// }

文中有不对或不足的地方,欢迎在评论区指正。谢谢 : )

React使用高德地图可以通过react-amap库来实现,该库提供了多种地图组件,包括Map、Markers、Circle、ContextMenu、自定义ContextMenu等,同时也提供了常用的绑定事件和设置属性的方法。在使用高德地图时,需要注意到高德地图的生命周期,合理地使用Map的销毁方法可以释放内存,清空容器。在react-amap中,经纬度、像素点、像素尺寸、矩形边界等基础类也被提供。以下是一些常用的绑定事件和设置属性的方法: - 常用绑定事件: map.on('click',xxx) //绑定单击事件 map.on('dblclick',xxx) //绑定双击事件 map.on('moveend',xxx) //绑定地图移动事件(移动结束触发) map.on('movestart',xxx) //绑定地图移动事件(移动开始触发) map.on('movemove',xxx) //绑定地图移动事件(移动中触发) map.on('zoomend',xxx) //绑定地图缩放事件(缩放结束触发) map.on('zoomchange',xxx) //绑定地图缩放事件(缩放过程中触发) map.on('zoomstart',xxx) //绑定地图缩放事件(缩放开始触发) map.on('dragend',xxx) //绑定地图拖拽事件(拖拽结束触发) map.on('dragging,xxx) //绑定地图拖拽事件(正在拖拽触发) map.on('dragstart',xxx) //绑定地图拖拽事件(拖拽开始触发) map.off('moveend',xxx) //解绑对应事件 - 常用设置属性: map.setLang('zh_cn') //设置中英文地图,en、zh_ne、zh_cn map.getZoom() //获取当前地图级别 map.getCenter() //获取当前地图中心位置 map.setZoom(zoom) //设置地图层级 map.setCenter([lng,lat]) //设置地图中心点 map.setZoomAndCneter(zoom,[lng,lat]) //同时设置地图层级与中心点 map.getCity((info)=>{}) //获取地图当前行政区 map.setCity('') //设置地图当前行政区,可通过中文城市名、adcode、citycode等设置地图的中心点 map.setFitView(overlays, immediately, avoid, maxZoom) //根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别 --相关问题--:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值