CustomMapJs学习记录

1. 引入js

js链接:链接:https://pan.baidu.com/s/1OrlNqouemO-G6nKD5cyppA
提取码:ra0g

<script src='./CustomMapJs.js'></script>
 <script src='./vis-network.js'></script>

2.创建自定义地图对象

		<div id="box">
			<img id="img" :url="bigmapImg">
			<div class="markerContainer"></div>
		</div>

	  let that=this;
	  lte nodeList=[{id:1,name:'cs1',px:10,py:10},{id:2,name:'cs2',px:10,py:30},
	  {id:3,name:'cs3',px:20,py:20},{id:4,name:'cs4',px:10,py:30},{id:5,name:'cs5',px:30,py:30}]
      lte dituObj = new CustomMapJs({
           $box: document.getElementById("box"),
           markerArr:  nodeList,

           clickImg: function (opt) {
         	  //点击图片事件
           },
           clickMarker: function (marker) {
           		//点击节点事件
           		that.showDevInfo(marker);
           },
           createMarker: function (marker, element) {
	           	let x=marker.px;
	           	let y=marker.py;
	           	//在地图上创建带名称的节点
	           	let name=marker.name;
	            var newElement = document.createElement('div');
	            var newTitle = document.createElement('span');
				newTitle.innerHTML=name;
				
                newElement.style.left = parseInt(x) + 'px';
                newElement.style.top = parseInt(y) + 'px';
	              
                newTitle.style.left = '-'+(16)+'px';//字体宽度的一半
                newTitle.style.width = (32+'px';
	               
                newElement.appendChild(newTitle);
				newElement.data=marker;
	            return newElement
           },
           removeMarker: function (marker) {
           		//删除节点事件
	           	this.opt.markerArr.splice(marker.index, 1);
	           	this.RenderMarker()
           },
           move: function (){
	           	this.moveMarker();
           }
       });

3.调用添加,删除节点方法

	//删除
	let delNode={id:3,name:'cs3'};

	dituObj.opt.markerArr.splice(delNode.index, 1);
	dituObj.opt.markerArr = dituObj.opt.markerArr.filter(t => t.id != delNode.id);
	dituObj.RenderMarker();
	delNode=null;

	//添加
	let obj={id:3,name'cs3',px:20,py:20}
	dituObj.opt.markerArr.push(obj);
	dituObj.RenderMarker();
	obj=null;

4.给地图添加事件

	let addNode={};
	let delNode={}; 

	let parentDocument=null;
	//地图元素的父节点,用于解决,当滚动条滚动出现右键坐标偏移问题
	parentDocument=document.getElementById("boxshell").parentNode.parentNode;
	let boxDocument=null;
	boxDocument=document.getElementById("box");
	function menuFun(e) {
		let parentDocument=that.parentDocument;
		let scrollTop=parentDocument.scrollTop;
		parentDocument.scrollTo(0,0);
		let scaleSize=dituObj.opt.scaleSize;
     	let srcType=e.srcElement.toString();
		let px=e.x;
      	let py=e.y+scrollTop;
   		if(srcType.indexOf('HTMLImageElement')!=-1){
   			addNode.px=e.layerX/scaleSize;
   			addNode.py=(e.layerY/scaleSize)+scrollTop;
   		}else if(srcType.indexOf('HTMLDivElement')!=-1&&e.srcElement.data!=null){
			delNode=e.srcElement.data;
   		}else {
   			return;
   		}
	}

	boxDocument.removeEventListener("contextmenu", menuFun);
   	boxDocument.addEventListener("contextmenu", menuFun);
    //鼠标右键
      	
	//关闭右键菜单,很简单
	window.onclick=function(e) {
		//用户触发click事件就可以关闭了,因为绑定在window上,按事件冒泡处理,不会影响菜单的功能
		if(document.querySelector('#menu')!=null) 
			document.querySelector('#menu').style.display='none';
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值