arcgis js 画点

本文详细介绍了如何使用 ArcGIS JavaScript API 进行地图绘制,包括引入必要的 CSS 和 JS 文件,定义地图显示区域,加载地图服务,以及实现点、线图层的绘制方法。同时,提供了画点的具体实现代码,涵盖坐标转换、图层管理、信息窗口的显示与交互等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引入需要的css、js文件,github地址https://github.com/zhangliqingyun/arcgis-javascript/tree/master/arcgis/3.29

<link rel="stylesheet" th:href="@{/dist/arcgis/3.29/css/esri.css}"/>   
<link rel="stylesheet" th:href="@{/dist/arcgis/3.29/css/tundra.css}"/>
<script th:src="@{/dist/arcgis/3.29/js/init.js}"></script> 

2.页面定义div:

    <!-- 底图展示的div开始 -->            
    <div id='map' style="width:100%;height:100%;display:block;position: absolute;"></div> 
    <!-- 底图展示的div结束 --> 

3.加载地图连接:  

var map = null;                       //共用地图定义
    var pointLayer = null;                //单点图层
    var aimedatLayer = null;              //瞄准点图层
    var pointListLayer = null;            //多点图层
    var lineLayer = null;                 //单线图层
    var lineListLayer = null;             //多线图层
    var pictureMarkerSymbol = null;       //图标marker
    var aimedatMarkerSymbol = null;       //瞄准图标marker
    var simpleLineSymbol = null;          //画线marker
    var url = "http://xxx.xx.xx.xxx:6080/arcgis/rest/services/CMAPDT/MapServer";  //底图的链接地址   

 //加载超图底图--超图
    function loadSupermapBaseMap(){        
        require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer","esri/layers/GraphicsLayer","esri/symbols/PictureMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/Color","dojo/dom-construct", "esri/dijit/InfoWindow"
        ], function(Map,ArcGISTiledMapServiceLayer,GraphicsLayer,PictureMarkerSymbol,SimpleLineSymbol,Color,domConstruct,InfoWindow) {        
            //var infoWindow = new InfoWindow({}, domConstruct.create("div"));
            //infoWindow.startup();     
            map = new Map("map", {center: [105.85, 36.79],zoom: 1});    //创建地图、指明中心点、放大程度值设置    
            var tiledLayer = new ArcGISTiledMapServiceLayer(url);       //根据图层链接创建图层
            map.addLayer(tiledLayer);                                   //图层添加到地图中         
            pointLayer = new GraphicsLayer({"id":"pointLayer"});        
            aimedatLayer = new GraphicsLayer({"id":"aimedatLayer"});   
            pointListLayer = new GraphicsLayer({"id":"apointListLayer"});
            lineLayer = new GraphicsLayer({"id":"lineLayer"});
            lineListLayer = new GraphicsLayer({"id":"lineListLayer"});
            map.addLayer(pointLayer, 2);     
            map.addLayer(aimedatLayer, 2);          
            map.addLayer(pointListLayer, 2);          
            map.addLayer(lineLayer, 2);          
            map.addLayer(lineListLayer, 2);             
            pictureMarkerSymbol = new PictureMarkerSymbol({"url":"/dist/img/marker-icon.png","height":25,"width":20,"xoffset":0,"yoffset":12});          
            aimedatMarkerSymbol = new PictureMarkerSymbol("/dist/img/aimedat.png", 45, 45);     
        });    
    }

4.画点的方法:

  //画点的方法
    function drawPointSupermap(data,type,popContent,pointPicture,moveTip){
         require(["esri/geometry/Point","esri/SpatialReference","esri/graphic","esri/dijit/InfoWindow","dojo/dom-construct","dojo/dom-attr","dojo/dom-style","dojo/dom"
         ], function(Point,SpatialReference,Graphic, InfoWindow,domConstruct,domAttr,domStyle,dom) {         
             var point = new Point(data.jd, data.wd, new SpatialReference({wkid:4326})); 
             var graphic = new Graphic(point, pictureMarkerSymbol);    
             cleanLayer();                              //清理图层                     
             pointLayer.add(graphic);             
             pointLayer.on("click",popupLayerClick);    //点击提示层的方法
             pointLayer.on("mouse-over",popupLayerOver);//鼠标放到提示层的方法
             pointLayer.on("mouse-out",popupLayerOut);  //鼠标移开提示层的方法
             map.infoWindow.hide();                     //隐藏弹出提示框     
             position();                                //定位放大地图                
             
             //清理图层 
             function cleanLayer(){
                pointLayer.clear();                //单点图层
             }                                 
        
             //定位放大地图
             function position(){  
                var latitude = parseFloat(data.jd);
                var longitude = parseFloat(data.wd);       
                var point = new Point(latitude, longitude, map.spatialReference);        
                map.setScale(5000000);        //缩放比例 (比例尺)                                    
                map.centerAndZoom(point);     //定位           
             }

             //点击提示层的方法   
             function popupLayerClick(e){ 
                e.stopPropagation();   
                var graphic = e.graphic;              
                map.infoWindow.setTitle("基本信息");              
                map.infoWindow.setContent(popContent);         
                map.infoWindow.show(e.mapPoint,InfoWindow.ANCHOR_UPPERLEFT);      
             }
            
             //鼠标放到提示层的方法
             function popupLayerOver(e){
                map.setMapCursor("pointer");
                var scrPt = map.toScreen(e.graphic.geometry);     
                var textDiv = domConstruct.create("div");
                domAttr.set(textDiv,{
                    "id":"text",
                    "text":""  
                });
                domStyle.set(textDiv, {
                    "left": scrPt.x+15 + "px",
                    "top": scrPt.y-10 + "px",     
                    "position": "absolute",
                    "z-index":99,
                    "background":"#fcffd1",
                    "font-size":"10px",
                    "border":"1px solid #0096ff",
                    "padding": "0.1em 0.3em 0.1em",
                    "border-radius": "3px",
                    "box-shadow": "0 0 0.75em #777777"
                });
                textDiv.innerHTML = moveTip;      
                if(dom.byId("text") != null){             //判断提示框存在则移除提示框
                    dom.byId("map").removeChild(dom.byId("text"));   
                }
                dom.byId("map").appendChild(textDiv);    
             }  
            
             //鼠标移开提示层的方法    
             function popupLayerOut(e){
                map.setMapCursor("default");  
                if(dom.byId("text") != null){             //判断提示框存在则移除提示框
                    dom.byId("map").removeChild(dom.byId("text"));   
                }    
             }   
        });                  
    }     

     

ArcGIS for JS可以通过鼠标拖拽的方式绘制点。你可以使用ArcGIS API for JavaScript提供的绘图工具来实现这个功能。具体步骤如下: 1. 首先,引入ArcGIS API for JavaScript的库文件,并创建一个地图容器,用于显示地图。 2. 创建一个绘图工具对象,并指定绘制点的类型。 3. 监听鼠标点击事件,在鼠标点击时获取点击位置的坐标。 4. 在点击事件中,使用绘图工具对象的draw()方法绘制点,并将点添加到地图上。 下面是一个简单的示例代码,展示如何使用ArcGIS for JS绘制点: ```javascript // 引入ArcGIS API for JavaScript的库文件 require([ "esri/Map", "esri/views/MapView", "esri/views/draw/Draw", "esri/Graphic" ], function(Map, MapView, Draw, Graphic) { // 创建地图对象 var map = new Map({ basemap: "topo-vector" }); // 创建地图视图对象 var view = new MapView({ container: "viewDiv", map: map, center: [-118.805, 34.027], zoom: 13 }); // 创建绘图工具对象,并指定绘制点的类型为点 var draw = new Draw({ view: view }); var pointSymbol = { type: "simple-marker", color: [226, 119, 40], outline: { color: [255, 255, 255], width: 1 } }; // 监听鼠标点击事件 view.on("click", function(event) { // 获取点击位置的坐标 var point = { type: "point", longitude: event.mapPoint.longitude, latitude: event.mapPoint.latitude }; // 创建点图形 var pointGraphic = new Graphic({ geometry: point, symbol: pointSymbol }); // 将点图形添加到地图上 view.graphics.add(pointGraphic); }); }); ``` 这段示例代码可以在ArcGIS API for JavaScript的官方文档中找到。你可以根据需要进行修改和扩展,实现更复杂的功能。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [arcgis for javascript 3.18版本物体轨迹移动](https://download.youkuaiyun.com/download/qq_27751965/18933597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [17 ArcGIS API for JavaScript 4.18通过鼠标绘制点、线、面](https://blog.youkuaiyun.com/qq_35117024/article/details/111514850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值