主题下载地址:
claro
tundra
nihilo
soria
沙箱底图可选方案: “satellite”, “hybrid”, “topo”, “gray”, “oceans”, “osm”, “national-geographic”
沙盒测试地址
subline ARCGIS sdk本地服务器地址
subline ARCGIS 测试地址
esri github资源代理 java php DotNet
arcgis help 中文
开发流程
下载 arcgis 的api 和 sdk
启用本地服务,将api,sdk 装载在本地服务中
修改配置文件 (arcgis_js_v311_api 下面install.html)
新建文件夹作为项目文件夹
创建测试文件
学习资源: (需付费)
http://edu.csdn.net/course/detail/5037
http://edu.csdn.net/course/detail/4384
http://edu.csdn.net/course/detail/799/10901?auto_start=1
中国基础地理信息数据:
链接 密码: ncx7
ArcGIS10.2破解版下载
链接 密码: j9y6
重要资源:
ersi video
dojo 官网
如何使用dojo dijit调整 widget 的样式?
如何使用dojo 制作”轮子”?(如何制作一个回到原点的功能)
GIS Stack Exchange 提问
arcgis 博客
arcgis 修改默认配置教程
教程:
arcgis 地图操作
添加点,线段,几何图形
地理处理任务-服务区域任务
交流qq群: 452117357
//可用链接
https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=ed_toolbar 二次编辑已有polygon
总结:
切片地图服务图层(TiledMapServiceLayer)多预先创建并还存在服务器中,多用做底图使用,
动态地图服务图层(DynamicMapServiceLayer)是每次发生一个请求后创建的,支持多种类型的操作(查询,设置定义表达式)
map对象的事件类型有: 鼠标事件 范围改变事件 地图改变事件 键盘事件 图层事件 平移缩放事件 等
图形图层包括(皆为可选项)!!case1
几何形状
符号
属性
信息模版
流程示范
创建几何图形 var point = new Point(Number(theX), number(theY))
创建符号 var markerSymbol = new SimpleMarkerSymbol();
分配属性 markerSymbol.setStyle(markerSymbol.STYLE_CIRCLE);
markerSymbol.setSize(12);
markerSymbol.setColor(new Color([255,0,0,0.5]))
创建图形 var pointGraphic = new Graphic(pointESRI, markerSymbol)
添加图形 map.graphics.add(pointGraphic)
创建图形图层继承自 esri/geometry
包括:Point Multipoint Polyline Polygon Extent
创建符号: 点 SimpleMarkerSymbol (多点也行)
线 SimpleLineSymbol
面 SimpleFillSymbol
图片 PicturMarkerSymbol
文字 textSymbol
分配属性 样式 (STYLE_CIRCLE STYLE_CROSS STYLE_DIAMONO STYLE_PATH STYLE_SQUARE)
大小 轮廓 颜色
特征图层 用于与用户交互使用 !!case2
流程:
创建featureLayer对象 new FeatureLayer(url, {})
设置可选参数
{
mode: FeatureLayer.MODE_SNAPSHOT, // 显示模式
outFields: [], //查询字段
refreshInterval: 5, //设置图层刷新时长(分钟)
disPlayOnPan: true //设置为false时可提高ie渲染的效率
}
定义显示模式
快照模式 FeatureLayer.MODE_SNAPSHOT 一次加载,直接使用
按需模式 FeatureLayer.MODE_ONDEMAND 按需加载,负载均衡
选择模式 FeatureLayer.MODE_SELECTION 加载选择的内容
设置定义表达式(过滤)
FeatureLayer.setDefinitionExpression("PROD_RES = 'yes'");
特征选择 FeatureLayer.selectFeatures
eg:
var selectQuery = new Query();
selectQuery.geometry = geometry;
// 定义选择一个新的选择集
FeatureLayer.selectFeatures(selectQuery, FeatureLayer.SELECTION_NEW)
// or 为已有选择集添加特征
//FeatureLayer.selectFeatures(selectQuery, FeatureLayer.SUBTRACT)
特征涂层渲染
有五种可选渲染器:
SimpleRenderer 简单为所有图形设置同样的符号
ClassBreakRenderer 针对数字属性的分级设置不同的符号
UniqueValueRenderer 符号化图形(为每一个图形设置唯一的符号)
DotDensityRenderer 显示空间离散的密度分布(人口密度)
TemporalRenderer 提供基于时间的特征渲染
关键流程:
创建渲染器 var renderer = new ClassBreakRenderer(symbol, "POPSQMI");
定义符号 renderer.addBreak(0, 5, new SimpleFillSymbol().setColor([255, 0, 0, 0.5]));
renderer.addBreak(5.01, 10, new SimpleFillSymbol().setColor([255, 255, 0, 0.5]));
renderer.addBreak(10.01, 25, new SimpleFillSymbol().setColor([0, 255, 0, 0.5]));
renderer.addBreak(25.01, Infinity, new SimpleFillSymbol().setColor([255, 128, 0, 0.5]));
应用到特征图层 featureLayer.setRenderer(renderer);
注: -Infinity、Infinity 表示数据下限、上限
控件与工具栏 [示例:]https://developers.arcgis.com/javascript/3/samples/toolbar_draw/
流程:
1. 为每一个按钮设置样式
2. 在工具栏创建按钮
3. 创建一个esri/toolbars/Navigation 或者 esri/toolbars/Draw 实例
4. 关联按钮事件到处理函数中
arcgis 中的控件:https://developers.arcgis.com/javascript/3/jssamples/widget_bookmarks_editable.html
BasemapGallery 底图画廊 用以切换地图
Bookmarks 书签
Print 地图导出
Geocoder 搜索框
Gauge 仪表盘
Measurement 测量长度 面积 获取鼠标的当前的坐标
Popup 模态框
Legend 显示地图上的标签与符号
OverviewMap 鹰眼图
Scalebar 比例尺
Directions 计算路径(导航)
HistogramTimeSlider 以时间柱图来代表地图上的图层数据的启用时间
HomeButton 返回地图的初始范围
LocateButton 查找并缩放到用户当前的位置
TimeSlider 可视化启用时间的图层
LayerSwipe 用于比较同一底图上不同图层的内容
分析类控件
AnalysisBase
...
特征编辑 针对企业地理数据库存储的格式数据进行创建 删除 移动 剪切 合并 重塑
--> 特征服务 为web编辑提供符号化和几何数据特征 制作地图 -- 发布服务 -- 二次编辑
--> 特征部件
Editor 编辑一个图层(立即保存)
特征创建 移动 删除 编辑, 节点编辑,属性编辑, 关联附件
templatePicker 点击符号化(popWindow?)
AttributeInspector 可通过web编辑特征属性(eg:日历控件)
AttachmentEditor 关联一个特征到附件
Edit 自定义工具栏
空间与属性查询(query QueryTask)
任务模式: 输入 --> 任务 --> 输出
流程:输入 -- 输入参数存储在 Query
任务 -- QueryTask执行任务
输出 -- 返回FeatureSet 结果集,包含一个Graphic特征数组
Query (可结合使用)
geometry 空间查询(几何输入 点 线 面)
where 定义属性查询
text 模糊查询(类似于where)
其他可选属性
定义返回的字段
输出空间参考系(几何类信息)
符合查询条件的几何特征信息
-
-
eg: 属性查询
var queryTask = new QueryTask(url);
var query = new Query();
query.returnGeometry = false; //限制返回的字段
query.outFields = ['*']; //*代表返回所有字段
query.where = 'STATE_NAME = "shanxi"' /文本信息必须用引号包裹,数字布尔值除外
query.text ='shiquan';
queryTask.execute(query, callback, errback)
function callback(FeatureSet){} function errback(){}
-
-
空间查询 (几何元素 空间关系常量)
可传入的几何元素 Extent Point Polyline Polygon
空间关系常量
SPATIAL_REL_INTERESECTS 特征类1的部分或者全部特征都包含在特征类2的特征中
SPATIAL_REL_CONTAINS 特征类1的部分特征包含在特征类2的特征中
SPATIAL_REL_CROSSES 特征类1的特征和特征类2的特征的并集
SPATIAL_REL_ENVELOPE_INTERSECTS 特征类1的特征和特征类2的特征的交集
SPATIAL_REL_OVERLAPS 特征类1的特征覆盖特征类2的特征
SPATIAL_REL_TOUCHES 特征类1的特征涉及特征类2中的边界特征
SPATIAL_REL_WITHIN 特征类1的特征完全被封闭在特征类2的特征中
SPATIAL_REL_RELATION 允许使用图形对比语言定义来指定的任何关系
eg:
var query = new Query();
query.geometry = evt.mapPoint;
query.spatialRelationship = SPATIAL_REL_INTERESECTS;
获取查询的结果集
function callback(FeatureSet){
var features = FeatureSet.features;
var feature = null;
for(var i=0; i<features.length; i++){
var feature = features[i];
var attributes = feature.attributes
pop = attributes.POP90_SQMI
map.graphics.add(features[i].setSymbol(sym)) =>设置符号
}
}
-
-
-另外两种查询的方法
IdentityTask FindTask
相同点:都能返回特征相关的属性 都能返回特征相关的属性
不同点:被动执行(点击执行) 主动执行(属性查询)
-
IdentityTask 返回图层中字段的属性
流程:
IdentityParameters
IdentityTask
IdentityResult
IndentityParameters
{
geometry 地理信息 evt.mapPoint
returnGeometry boolean true
layerIds 执行图层的Id [0,1]
tolerance 公差(相当于相似度,过高结果则少,过低或匹配不到,需要不断调试) number
}
IndentityTask
var identityTask = new IdentityTask(url)
var identityParameters = new IdentityParameters()
identityParameters.geometry = evt.mapPoint;
-
identityTask(identityParameters, callback, errback);
FindTask (查找之前必需引入 esri/taks/find resource)
流程:
FindParameters
FindTask
FindResult
FindParameters 可选参数
{
searchText 查找属性和字段 dom.byId('ownerName').value;
serachFields: [] //跨域搜索使用到的字段
returnGeometry
layerIds
geometry
contains: false 精确查找,反之模糊查询不区分大小写
}
地址转换点 和 点转换地址 !!case5
将地址添加到地图的流程:
地理编码为地址分配坐标
=> Locator服务
- Locator 类
输入参数
- Address对象 (json)
- Point对象 (逆地理编码)【操作地图获得】
提交到地理编码服务
返回匹配到地址的AddressCandidate对象
绘制到地图
-
网络分析任务(最短路径,临时设施, 服务区)
RouteParamters
RouteTask
RouteResult
整合ArcGIS Online
使用webmap ID 为应用程序添加ArcGIS Online
使用JSON 为应用程序添加ArcGIS Online 地图