ArcGis API for JavaScript 开发笔记一 加载地图

1、首先要配置GIS 环境

参考资料:看下这些大神的资料:

http://blog.sina.com.cn/s/blog_708bacf90100yddk.html

http://blog.csdn.net/wufeishimeng/article/category/522004

也可以查看官方的例子:

https://developers.arcgis.com/javascript/jssamples/

查看GIS 官方API

https://developers.arcgis.com/javascript/jsapi/

第一步:在arcgis api for javascript 官网下载压缩文件(链接:http://support.esrichina-bj.cn/2011/0223/960.html);

第二步:解压下载的压缩包,在文件中找到init.js  dojo.js以记事本的方式打开,在里面搜索[HOSTNAME_AND_PATH_TO_JSAPI] 将其改为 localhost,然后放在C:\inetpub\wwwroot目录下。此目录为IIS默认网站的目录,若不适用离线服务,可适用GIS 提供的在线服务,如代码所示

第三步:开始创建第一个程序

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head runat="server">
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <title></title>
 5     <%--在此处引用GIS服务,此处为GIS提供的在线服务 --%>
 6     <%-- <link rel="stylesheet" href="https://js.arcgis.com/3.15/dijit/themes/tundra/tundra.css">
 7     <link rel="stylesheet" href="https://js.arcgis.com/3.15/esri/css/esri.css">
 8     <script src="https://js.arcgis.com/3.15/"></script>--%>
 9
10     <%--此处为我们配置好的离线服务,若出不来地图,仔细检查下你的文件路径是不是对的--%>
11     <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.14/jsapi/dijit/themes/claro/claro.css" />
12     <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.14/jsapi/esri/css/esri.css" />
13     <script src="http://localhost/arcgis_js_api/library/3.14/jsapi/init.js" type="text/javascript"></script>
14
15     <script>
16         var map;
17         require(["esri/map"], function (Map) {
18             map = new Map("map", {
19                 basemap: "streets", //显示的地图样式 此处为地图,basemap: "satellite", //实景图
20                 center: [-80.94, 33.646], //地图加载后,初始位置
21                 zoom: 8, //放大级别,值越大放大的比例就越大
22                 slider: false,
23                 maxZoom: 18,//地图最大缩放级别
24                 minZoom: 1, //地图最小缩放级别
25                 logo: false  //不显示Esri的logo
26             });
27
28             //加载地图服务
29             var myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer(
30                     "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
31             map.addLayer(myTiledMapServiceLayer);//添加到地图中
32         });
33     </script>
34 </head>
35 <body>
36     <form id="form1" runat="server">
37         <div>
38             <%--定义一个div来放地图--%>
39             <div id="map"></div>
40         </div>
41     </form>
42 </body>
43 </html>

下面是在地图上添加图标,并且对图进行一些操作,如点击图片是弹出窗体及其内容

  1 <html xmlns="http://www.w3.org/1999/xhtml">
  2 <head runat="server">
  3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4     <title></title>
  5     <%--在此处引用GIS服务,此处为GIS提供的在线服务 --%>
  6     <%-- <link rel="stylesheet" href="https://js.arcgis.com/3.15/dijit/themes/tundra/tundra.css">
  7     <link rel="stylesheet" href="https://js.arcgis.com/3.15/esri/css/esri.css">
  8     <script src="https://js.arcgis.com/3.15/"></script>--%>
  9
 10     <%--此处为我们配置好的离线服务,若出不来地图,仔细检查下你的文件路径是不是对的--%>
 11     <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.14/jsapi/dijit/themes/claro/claro.css" />
 12     <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.14/jsapi/esri/css/esri.css" />
 13     <script src="http://localhost/arcgis_js_api/library/3.14/jsapi/init.js" type="text/javascript"></script>
 14
 15     <script>
 16         var mymap, layer, layer2, state2, upindex, upjd, upwd;
 17         require(["esri/map", "esri/toolbars/draw", "esri/symbols/TextSymbol",
 18             "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/PictureMarkerSymbol", "esri/geometry/Point", "esri/layers/GraphicsLayer",
 19             "esri/symbols/PictureFillSymbol", "esri/symbols/CartographicLineSymbol", "esri/SpatialReference", "esri/InfoTemplate",
 20             "esri/graphic",
 21             "esri/dijit/Bookmarks",
 22             "dojo/_base/Color", "dojo/dom", "dojo/on", "dojo/ready"
 23             , "extras/AddTag", "dijit/form/DateTextBox", "dojo/parser"], function (map, Draw, TextSymbol,
 24             SimpleMarkerSymbol, SimpleLineSymbol, PictureMarkerSymbol, Point, GraphicsLayer,
 25             PictureFillSymbol, CartographicLineSymbol, SpatialReference, InfoTemplate,
 26             Graphic, Bookmarks, Color, dom, on, ready, AddTag) {
 27                 mymap = new map("map", {
 28                     basemap: "streets", //显示的地图样式 此处为地图,basemap: "satellite", //实景图
 29                     center: [54.37957701171877, 24.19937270915223], //地图加载后,初始位置
 30                     zoom: 8, //放大级别,值越大放大的比例就越大
 31                     slider: false,
 32                     maxZoom: 18,//地图最大缩放级别
 33                     minZoom: 1, //地图最小缩放级别
 34                     logo: false  //不显示Esri的logo
 35                 });
 36
 37                 //加载地图服务
 38                 var myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer(
 39                         "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
 40                 mymap.addLayer(myTiledMapServiceLayer);//添加到地图中
 41
 42                 //添加一个图层,用来存放图标
 43                 layer = new GraphicsLayer();
 44                 mymap.addLayer(layer);
 45
 46                 layer2 = new GraphicsLayer();
 47                 mymap.addLayer(layer2);
 48                 //在地图的onload事件内给地图中加图标
 49                 mymap.on("load", function () {
 50                     AddImg();
 51                 });
 52
 53                 //添加图标
 54                 function AddImg() {
 55                     var jd = 54.37957701171877, wd = 24.19937270915223; //通过经纬度加载图标
 56                     for (var i = 0; i < 2; i++) {
 57                         var point = new Point(jd, wd, new SpatialReference({ wkid: 4326 })); //设置加载图标的点
 58
 59                         var picSymbol = new PictureMarkerSymbol("http://localhost/i_pushpin.png", 40, 40);//设置要显示的图片,以及宽度,高度
 60
 61                         var picGraphic = new Graphic(point, picSymbol, { "jd": jd, "wd": wd, "id": i });// "jd": a1, "wd": a2, "id": 1这些为这个点的值,比如你若需要获取某个点的id,可在这里设置
 62
 63                         layer.add(picGraphic);//添加到layer中
 64
 65                         mymap.graphics.add(picGraphic); //添加到地图中
 66
 67                         jd = 55.37957701171877;
 68                         wd = 25.19937270915223;
 69                     }
 70                 }
 71
 72                 //对layer(图标)进行操作
 73                 //图层layer鼠标移入事件
 74                 layer.on("mouse-over", function (evt) {
 75                     var index1 = 0;
 76                     //获取当前鼠标所在的卡点标识
 77                     var index = evt.graphic.attributes.id;
 78
 79                     //获取layer2有没有对象
 80                     var length = layer2.graphics.length;
 81                     if (length != 0) {
 82                         for (var i = 0; i < layer2.graphics.length; i++) {
 83                             if (layer2.graphics[i].attributes.id == upindex) {
 84                                 layer2.graphics[i].hide();
 85                                 //获取前一个卡点的经度
 86                                 var jds = upjd;
 87                                 //获取前一个卡点的纬度
 88                                 var wds = upwd;
 89                                 //创建一个点坐标
 90                                 var points = new Point(jds, wds, new SpatialReference({ wkid: 4326 }));
 91                                 //创建一个图片
 92                                 photoSymbol = new PictureMarkerSymbol("http://localhost/i_pushpin.png", 40, 40);
 93                                 //创建一个graphic
 94                                 var mygraphic = new Graphic(points, photoSymbol, { "jd": jds, "wd": wds, "id": upindex, "status": state2 });
 95                                 //添加到layer2图层
 96                                 layer.add(mygraphic);
 97                                 //添加到地图
 98                                 mymap.graphics.add(mygraphic);
 99                             }
100                         }
101                     }
102
103                     //循环图层layer,找到当前选择的卡点图标
104                     for (var i = 0; i < layer.graphics.length; i++) {
105                         if (index1 == 0) {
106                             if (layer.graphics[i].attributes.id == index) {
107                                 //隐藏当前的图标
108                                 layer.graphics[i].hide();
109                                 //获取设备状态
110                                 var state = evt.graphic.attributes.status;
111                                 state2 = state;
112                                 upindex = index;
113                                 //获取当前卡点的经度
114                                 var jds = evt.graphic.attributes.jd;
115                                 upjd = jds;
116                                 //获取当前卡点的纬度
117                                 var wds = evt.graphic.attributes.wd;
118                                 upwd = wds;
119                                 //创建一个点坐标
120                                 var points = new Point(jds, wds, new SpatialReference({ wkid: 4326 }));
121                                 //创建一个图片
122                                 var photoSymbol = new PictureMarkerSymbol("http://localhost/bz_red.png", 40, 45);
123                                 //创建一个graphic
124                                 var mygraphic = new Graphic(points, photoSymbol, { "jd": jds, "wd": wds, "id": index, "status": state });
125                                 //添加到layer2图层
126                                 layer2.add(mygraphic);
127                                 //点击弹出窗体
128                                 var str = "<table class=‘table‘ borderColor=#000000 height=40 cellPadding=1 width=150 align=center border=0>";
129                                 //var czname = "实时过车";
130                                 str += "<tr><td><a href=‘#‘ style=‘text-decoration: none;color:#000000‘ onclick=‘TrafficQuery(" + index + ")‘>Traffic Query</a></td></tr>";
131                                 str += "<tr><td><a href=‘#‘ style=‘text-decoration: none;color:#000000‘ onclick=‘RealTimeCar(" + jds + "," + wds + "," + index + ")‘>Real Time Traffic</a></td></tr>";
132                                 str += "</table>";
133                                 //实例化一个窗体
134                                 var infoTemplate = new InfoTemplate();
135                                 //设置窗体的宽高
136                                 mymap.infoWindow.resize(200, 300);
137                                 //设置标题
138                                 infoTemplate.setTitle("TestWindows");
139                                 //设置内容
140                                 infoTemplate.setContent(str);
141                                 //绑定到mygraphic
142                                 mygraphic.setInfoTemplate(infoTemplate);
143                                 //添加到地图
144                                 mymap.graphics.add(mygraphic);
145                             }
146                         }
147                     }
148                 });
149             });
150     </script>
151 </head>
152 <body>
153     <form id="form1" runat="server">
154         <div>
155             <%--定义一个div来放地图--%>
156             <div id="map"></div>
157         </div>
158     </form>
159 </body>
160 </html>
时间: 2024-12-25 03:00:38

ArcGis API for JavaScript 开发笔记一 加载地图的相关文章

ArcGIS API for JavaScript开发环境搭建及第一个实例demo

原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3.9,它提供了更为丰富而又强大的功能.     一.安装前准备 1.ArcGIS Server for JavaScript API各版本下载地址:http://support.esrichina-bj.cn/2011/0223/960.html,我们选择下载最新的"ArcGIS API for Ja

ArcGIS API for Silverlight 调用GP服务加载等值线图层

原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现GP服务调用,这里的雨量数据是通过一个WebService获取而来,主要信息是雨量站点的经纬度坐标值和某个时间段内的降雨量值三个主要字段. 以下是核心代码部分: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pr

ArcGIS API for JavaScript 学习笔记 (一) --第一个WebGIS应用程序

说明:本地部署后续我会尝试. 简单介绍: 开发环境是Visual Studio 2012,因为它为所有的.aspx文件..htm文件以及外部的.js文件提供了IntelliSense(智能提示),相当于其他软件的代码自动补全功能,非常方便.接下来是我的第一个Javascript API 应用程序.ESRI在其arcgis online中提供了在线的ArcGIS API for JavaScript,在web应用中直接引用即可,无需下载安装:当然也可以下载API,然后部署到自己的web服务器,在这

ArcGIS API for JavaScript开发初探——HelloWord

1.前言 ArcGIS API for JavaScript 3.10版本使用Dojo1.9.1.dgrid升级到0.3.14版本.put-selector version版本升级到0.3.5和xstyle版本升级到0.1.3. 2.建立第一个应用程序HelloWord 2.1 .创建一个简单的HTML文档 首先我们先创建一个简单的Html文档,具体事例如下图: <!DOCTYPE html> <html> <head> <meta charset="u

Arcgis api for javascript学习笔记-初步尝试(3.2X版本)

Arcgis api for javascript(3.22版本)官方地址 :https://developers.arcgis.com/javascript/3/ 1. 根据官方示例实现一个简单地图展示功能. 示例代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri

Flixel学习笔记002 加载地图(一)

这篇的参考官方代码示例Cameras,代码在https://github.com/phmongeau/SplitScreen/tree/master/src. 首先用Windows的画图画了几个格,大小是20*20的. 然后参照官方代码示例,写了一段代码: 1 package org 2 { 3 import org.flixel.FlxState; 4 import org.flixel.FlxTilemap; 5 6 /** 7 * ... 8 * @author QuanJP [email

Windows Store App JavaScript 开发:页面加载

  在开发基于JavaScript的Windows应用商店应用时,可以使用HtmlControl和PageControl控件加载一个页面,这两个WinJS库控件曾在上面的内容中提到过,HtmlControl控件接收一个包含页面地址的对象作为参数,并根据这个地址加载相应的页面:PageControl控件是自定义控件,可以使用WinJS.UI.Pages.define函数将一个页面定义为PageControl控件,然后在其他页面中使用,使用这个PageControl控件就相当于加载了该控件相对应的页

安卓开发笔记——ListView加载性能优化ViewHolder

在前不久做安卓项目的时候,其中有个功能是爬取某网站上的新闻信息,用ListView展示,虽然做了分页,但还是觉得达不到理想流畅效果. 上网查阅了些资料,发现一些挺不错的总结,这里记录下,便于复习. 当ListView有大量的数据需要加载的时候,会占据大量内存,影响性能. 经过测试,发现耗费大量资源是在ListView去加载布局文件的时候,也就是findViewById的时候,这时我们就该考虑如何复用这个布局文件对象,以减少对象的创建. ListView加载数据是在public View getV

ArcGIS API for JavaScript开发初探——基本地图组件使用

1.前言 在上一篇我们已经我们已经讲述了第一个地图应用程序的HelloMap的创建过程,这一篇我们来讲述基本地图组件:Home Button.比例尺.鹰眼图的使用方法. 2.基本地图组件 在ArcGIS Js API中对于基本的地图组件API都是已经帮我们封装好的,我们一般只需要知道模块怎么调用,摆放在什么位置就可以了.下面我们先贴出HelloMap的基本代码便于后面讲解内容的开展. <!DOCTYPE html> <html> <head> <meta char