在vue2项目中使用天地图+Leaflet搭配使用(一)

  本次记录在项目中用到的新东西(纯小白记录项目)!!!本次项目中运用到天地图,使用到天地图的API,首要的是在天地图官网进行申请注册用户===>申请成为天地图开发者===>获取到许可的Key===>使用API及服务。

   废话不多说,首先要创建一个vue2的项目(不会创建请移直创建一个项目 | Vue CLI (vuejs.org)),

首先,在项目中安装Leaflet的依赖 npm install leaflet,

然后初始化地图,先在布局中创建一个div,充当地图存放的容器,通过id来进行初始化绑定。然后引入地图需要的类

 import "leaflet/dist/leaflet.css";
 import L from "leaflet";
 import "leaflet.pm";
 import "leaflet.pm/dist/leaflet.pm.css";

进行配置。(注:代码中的you_key换成申请天地图的key!!!)

initMap() {
				this.map = L.map("map", {
				crs: L.CRS.EPSG4326,
				center: [39.92800, 116.40400],
				zoom: 14,
				maxZoom: 17, //最大缩放层级
				minZoom: 3, //最小缩放层级
				tileSize: 256, //切片大小
				attributionControl: false,
			});
            L.tileLayer(
                "http://t0.tianditu.gov.cn/img_c/wmts?tk=you_Key&layer=img&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}", {
                crossOrigin: 'anonymous',
                tileSize: 256,
                zoomOffset: 1
            }).addTo(this.map);


			// 矢量图
			L.tileLayer(
				"http://t0.tianditu.gov.cn/cia_c/wmts?tk=you_Key&layer=cia&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}", {
				crossOrigin: 'anonymous',
				tileSize: 256,
				zoomOffset: 1
			}).addTo(this.map);
}

实现效果如下:

然后在添加一些绘图工具

//添加的绘制工具
			this.map.pm.addControls({
				position: "topleft",
				drawPolygon: false, // 添加绘制多边形
				drawMarker: false, //添加按钮以绘制标记
				drawCircleMarker: false, //添加按钮以绘制圆形标记
				drawPolyline: false, //添加按钮绘制线条
				drawRectangle:	true,	//添加按钮绘制矩形
				drawCircle: false, //  添加按钮绘制圆圈
				editMode: true, //  添加按钮编辑多边形
				dragMode: true, //   添加按钮拖动多边形
				cutPolygon: true, // 添加一个按钮以删除图层里面的部分内容
				removalMode: true  // 清除图层
			});
			// 设置绘制后的线条颜色等
			this.map.pm.setPathOptions({
				color: "orange",
				fillColor: "green",
				fillOpacity: 0.4
			});
			this.map.pm.setLang('zh');  //设置语言  en, de, it, ru, ro, es, fr, pt_br, zh , nl

实现效果如下:

 在进行一些创建绘制图标的事件,和清除的图形的事件,this.geoJson = this.gEditableLayer.toGeoJSON()为了解析数据格式为GeoJson的格式传递给后端,如有需可到GeoJson官网查看详情格式!首页 | GeoJSON.cn

// 绘制事件监听
this.map.on("pm:drawstart", (e) => {
   console.log(e, "绘制开始第一个点");
});
this.map.on("pm:drawend", (e) => {
    console.log(e, "禁⽌绘制、绘制结束");
});
this.map.on("pm:create", (e) => {
    console.log(e, '开始绘制========');
});
this.map.on("pm:globalremovalmodetoggled", (e) => {
     console.log(e, "清除图层时调用");
});
this.map.on("pm:remove", (e) => {
     console.log(e, '删除事件。。。。。')
})

效果如下:

 接下去的按照需求进行操作就可以了。。。。。。

(L.map API 的核心类 - 它用于在页面上创建地图并对其进行操作。

该方法的第二个参数中的地图状态选项如下(还有一些动画选项,交互选项等查看apiapi))

选项类型默认描述
crsCRSL.CRS.EPSG3857要使用的坐标参考系。如果您不确定它的含义,请不要更改它。
zoomNumberundefined初始地图缩放级别
minZoomNumber*地图的最小缩放级别。如果未指定且地图中至少有一个GridLayerTileLayerminZoom则将使用其选项中最低的一个。
maxZoomNumber*地图的最大缩放级别。如果未指定且地图中至少有一个GridLayerTileLayermaxZoom则将使用其选项中的最高选项。
layersLayer[][]最初将添加到地图的图层数组
maxBoundsLatLngBoundsnull设置此选项后,地图会将视图限制在给定的地理范围内,如果用户尝试在视图外平移,则会将用户弹回。要动态设置限制,请使用 setMaxBounds方法。
rendererRenderer*在地图上绘制矢量图层的默认方法。L.SVG 或L.Canvas默认情况下取决于浏览器支持。
centerLatLngundefined地图的初始地理中心

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue Leaflet 是一种结合了Vue框架和Leaflet库的前端技术,用于展示和操作地图地图是一种具有高清影像和矢量数据的地图服务,提供了丰富的地理信息资源和功能,如地图展示、地图操作、定位导航等。 Vue Leaflet 可以通过调用地图的API接口,获取并展示地图的各类地理信息。通过Vue的组件化开发方式,可以方便地在Vue项目使用这些地理信息,实现自定义的地图功能。例如,在Vue Leaflet 可以实现地图、标记点、线段、面等地理要素的显示和编辑。 Vue Leaflet 提供了一套方便易用的API和组件,可以轻松地在Vue项目集成和使用地图。比如,可以使用Vue Leaflet 提供的地图组件将地图展示在网页,可以使用它提供的标记点组件在地图上添加标记,可以使用它提供的工具条组件进行地图的操作和导航等。 使用Vue Leaflet 可以有效地提高开发效率和用户体验。通过其简洁的API和灵活的组件,开发人员可以快速地实现各种地图需求,如显示地图、标记地点、展示线段等。并且,Vue Leaflet 结合了Vue框架的优势,可以更好地组织和管理地图相关的逻辑代码,使开发工作更加方便和高效。 总之,Vue Leaflet 是一种方便、灵活和高效的前端技术,用于展示和操作地图。它通过结合Vue框架和Leaflet库,提供了一套方便易用的API和组件,帮助开发人员快速实现各种地图需求,提高开发效率和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值