ArcGIS API 4.x for Js 点击图层弹出信息框

需求

点击小船图层后弹出信息框,信息框中包含该船只(图层)的信息

效果
在这里插入图片描述

核心步骤

1.通过点击事件筛选图层 view.on(“click”,function(event){}
2.将图层中attributes属性包含的信息动态渲染到自定义的信息框中
3.设置信息框的显示关闭

完整代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>点击图层弹出信息框</title>
    <link rel="stylesheet" href="http://139.9.43.111:8084/arcgis_js_api/library/4.13/esri/css/main.css"/>
		<style>
			html,
			body,
			#viewDiv {
				padding: 0;
				margin: 0;
				height: 100%;
				width: 100%;
			}
			#infoBox{
				position: absolute;
				z-index:999px;
				width:150px;
				height: 200px;
				background-color: #fff;
				font-size: 12px;
				top: 0px;
				left: 5px;
				padding-left: 5px;
				display: none;
			}
			.title{
				color: green;
			}
		</style>
		<script src="js/jquery-1.11.3.min.js"></script>
		<script src="http://139.9.43.111:8084/arcgis_js_api/library/4.13/dojo/dojo.js"></script>
	</head>
	<body>
		<div id="viewDiv"></div>
		<!-- 准备自定义弹窗窗口 -->
		<div id="infoBox">
			<p class="title">船只信息</p>
			<p>船舶ID:<span id="shipID"></span></p>
			<p>MMSI:<span id="mmsi"></span></p>
			<p>船只类型:<span id="shipType"></span></p>
			<p>船舶名称:<span id="name"></span></p>
     		<p>船舶长度:<span id="length"></span></p>
			<p>船舶宽度:<span id="width"></span></p>
		</div>
		<script>
			require([
				"esri/Map",
				"esri/views/MapView",
				"esri/layers/GraphicsLayer",
				"esri/Graphic",
				"esri/geometry/Point"
			], function (Map,MapView,GraphicsLayer,Graphic,Point) {
		   
			 //添加地图
			 var map = new Map({
		   	basemap: 'satellite',
		   });
		   		 
		   var view = new MapView({
		   	container: "viewDiv",
		   	map: map,
		   	center: [107.246152,34.414465],
		   	zoom: 7
		   });	 
			 
			 //1.准备一个图层或服务发布的图层
			 var gLayer = new GraphicsLayer({
			 				title: 'ship'
			  });
			 var point = {
						 type:"point",
						 longitude: 105.45598133044301,
						 latitude: 34.03155034545997,
				}
				var pgraphic = new Graphic({
					 geometry: point,
					 symbol: {
						type: "picture-marker",
						url: './img/ship1.png',
						width: 15,
						height: 15,
					},
					//给图层添加携带信息
					attributes: {
						"shipID":477765901, //船舶ID
						"mmsi":477765901, //唯一表示
						"shipType":"货船", //船只类型
						"name":"CHUANZHI",
						"length":2610,
						"width":320		
					}
					
				});
			  gLayer.graphics.add(pgraphic);
				map.add(gLayer);

          //2.设置点击事件
			 view.on("click",function(event){
				 view.hitTest(event).then(function(response){
					 if(response.results[0].graphic.layer.title == 'ship'){			
						 var infoArr = response.results[0].graphic.attributes;
						 console.log(infoArr);
						 $("#shipID").html(infoArr.shipID);
						 $("#mmsi").html(infoArr.mmsi);
						 $("#shipType").html(infoArr.shipType);
						 $("#name").html(infoArr.name);
						 $("#length").html(infoArr.length);
						 $("#width").html(infoArr.width);
						 $("#infoBox").css("display","block");
					 }
				 })
			 })
		 })	 	 
		 
	 </script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值