(四)ArcGIS API For Javascript之地图操作及小部件
来源:互联网 发布:妈富隆 欣妈富隆 知乎 编辑:程序博客网 时间:2024/06/05 06:04
- 引言
- 地图的基本操作
- 1代码实现
- 2运行结果
- 3全部代码
- API中的小部件
- 1代码实现
- 2代码结果绑定在DOM
- 3全部代码绑定在DOM
- 4补充将小部件绑定在地图上
- 5运行结果绑定在地图
- 6全部代码绑定在地图
1.引言
开发一个GIS系统不可避免的就要涉及一些简单的地图操作,比如:拉框放大,拉框缩小,平移,全图等相关操作。除了这些基本的地图操作,Esri给我们提供的一些小部件也非常有用,其中几个重要的小部件有:鹰眼,书签,比例尺等等。在此篇博文中,主要介绍地图的基本操作和几个常用的小部件。
2.地图的基本操作
在ArcGIS API中给我们提供了一个类叫做Navigation
,通过这个类我们可以实现对地图的基本操作,Navigation
类的用法可以分为以下几步:
- 创建
Navigation
对象 - 激活
Navigation
的相应状态 - 地图操作
2.1代码实现
- 创建五个按钮
<button>拉框放大</button> <button>拉框缩小</button> <button>平移</button> <button>全图</button> <button>漫游</button>
- 添加地图(省略)
- 给相应按钮添加绑定事件
//给按钮添加绑定事件 query("button").on("click",function(event){ //获得按钮的文本信息 var value=this.innerHTML; switch(value){ case "平移": navToolbar.activate(Navigation.PAN); break; case "拉框缩小": navToolbar.activate(Navigation.ZOOM_OUT); break; case "拉框放大": navToolbar.activate(Navigation.ZOOM_IN); break; case "全图": navToolbar.zoomToFullExtent(); break; case "漫游": //默认是漫游操作 navToolbar.deactivate(); break; } })
2.2运行结果
- 以拉框放大为例:
2.3全部代码
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Geometric _Network</title> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css" /> <script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.17/3.17/init.js"></script> <style type="text/css"> .MapClass{ width:100%; height:600px; border:1px solid #000; } </style> <script type="text/javascript"> require(["esri/map", "dojo/on", "dojo/dom", "esri/layers/ArcGISDynamicMapServiceLayer", "dojo/query","esri/toolbars/navigation", "dojo/domReady!"], function (Map,on,dom, ArcGISDynamicMapServiceLayer,query,Navigation ) { var map = new Map("mapDiv",{ logo: false }); var layer = new ArcGISDynamicMapServiceLayer ("http://localhost:6080/arcgis/rest/services/Test/MyService/MapServer"); map.addLayer(layer) //创建地图操作对象 var navToolbar = new Navigation(map); //给按钮添加绑定事件 query("button").on("click",function(event){ //获得按钮的文本信息 var value=this.innerHTML; switch(value){ case "平移": navToolbar.activate(Navigation.PAN); break; case "拉框缩小": navToolbar.activate(Navigation.ZOOM_OUT); break; case "拉框放大": navToolbar.activate(Navigation.ZOOM_IN); break; case "全图": navToolbar.zoomToFullExtent(); break; case "漫游": //默认是漫游操作 navToolbar.deactivate(); break; } }) }); </script></head><body class="tundra"> <div id="mapDiv" class="MapClass"></div> <button>拉框放大</button> <button>拉框缩小</button> <button>平移</button> <button>全图</button> <button>漫游</button></body></html>
3.API中的小部件
关于API中提供的小部件有两种使用方式:
- 将小部件绑定在一个DOM元素上面
- 将小部件绑定在地图的上面
3.1代码实现
- 首先我们将小部件绑定在DOM元素上面
- 我们创建一个DOM元素用于存放鹰眼控件
<div id="view"></div>
- 创建小部件(并指定小部件绑定在哪一个DOM元素上面)
//1.创建小部件对象 var overviewMapDijit = new OverviewMap({ map: map, visible: true, },dom.byId("view"));//指定将小部件绑定在哪个DOM元素上面
- 启用小部件
//2.启用小部件 overviewMapDijit.startup();
3.2代码结果(绑定在DOM)
3.3全部代码(绑定在DOM)
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Overview Map</title> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css" /> <script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.17/3.17/init.js"></script> <style> .MapClass{ width:600px; height:400px; border:1px solid #000; } #view { height: 100px; width: 100px; border:1px solid red; border-right-color:blue; position:relative; left:800px; top:-200px; } </style> <script> require(["esri/map","dojo/dom","esri/dijit/OverviewMap","dojo/domReady!"], function ( Map,dom, OverviewMap){ var map = new Map("mapDiv", { basemap: "topo" }); //1.创建小部件对象 var overviewMapDijit = new OverviewMap({ map: map, visible: true, },dom.byId("view"));//指定将小部件绑定在哪个DOM元素上面 //2.启用小部件 overviewMapDijit.startup(); }); </script> </head> <body> <div id="mapDiv" class="MapClass"></div> <div id="view"></div> </body></html>
3.4补充(将小部件绑定在地图上)
- 只需要在创建小部件的时候,修改一个属性即可
var overviewMapDijit = new OverviewMap({ //指定将小部件绑定在地图的哪一个位置:可以填写top-right,bottom-right,bottom-left 和top-left. attachTo: "top-right", map: map, visible: true, });
3.5运行结果(绑定在地图)
3.6全部代码(绑定在地图)
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Overview Map</title> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css" /> <script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.17/3.17/init.js"></script> <style> .MapClass{ width:100%; height:600; } </style> <script> require(["esri/map","dojo/dom","esri/dijit/OverviewMap","dojo/domReady!"], function ( Map,dom, OverviewMap){ var map = new Map("mapDiv", { basemap: "topo" }); //1.创建小部件对象 var overviewMapDijit = new OverviewMap({ //指定将小部件绑定在地图的哪一个位置:可以填写top-right,bottom-right,bottom-left 和top-left. attachTo: "top-right", map: map, visible: true, }); //2.启用小部件 overviewMapDijit.startup(); }); </script> </head> <body> <div id="mapDiv" class="MapClass"></div> </body></html>
4 0
- (四)ArcGIS API For Javascript之地图操作及小部件
- 地图小部件—ArcGIS API for JavaScript
- Arcgis API for JS 地图小部件
- (十五)ArcGIS API For Javascript之地图输出
- ArcGIS.Server.9.3和ArcGIS API for JavaScript地图实现Toorbar功能(四)
- ArcGIS.Server.9.3和ArcGIS API for JavaScript地图实现Toorbar功能(四)
- arcgis api for silverlight开发系列之四:实现地图提示MapTips及QueryTask揭秘
- (三)ArcGIS API For Javascript之调用动态地图服务
- 二、ArcGIS API for JavaScript之地图与图层(1)
- 三、ArcGIS API for JavaScript之地图与图层(2)
- (九)ArcGIS API For Javascript调用结果地图服务
- ArcGIS API for Javascript 第一个地图
- ArcGIS for Silverlight API google地图操作
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现基本的地图功能(一) javascript
- ArcGIS Api For Android学习之(二)加载地图
- ArcGIS API for JS 之创建地图
- ArcGIS API for Javascript 3.21地图开发实例(一、图形绘制和删除及popup弹出层)
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块
- LeetCode No.67 Add Binary
- HttpAsyncClient (异步http 请求)的连接池使用
- MFC里拆分窗口
- SoapUI入门手册
- 字蛛使用
- (四)ArcGIS API For Javascript之地图操作及小部件
- JDBC
- [JavaScript] 判断鼠标进入容器方向
- 行为识别笔记:improved dense trajectories算法(iDT算法)
- cocos 3.x 创建新工程的命令
- Linux内核中的Kconfig、Makefile、.config
- Scrapy ——如何防止被ban 屏蔽 之策略大集合(六)
- android沉浸式状态栏(像iOS一样的状态栏)
- 八大排序算法(二) 折半插入排序