larvarl怎么直连socket服务器和客户端或客户端

ArcGIS JavaScript API功能结构介绍_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ArcGIS JavaScript API功能结构介绍
上传于|0|0|文档简介
&&官方资料,对ArcGIS JavaScript API 的功能结构做了相关极少
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩47页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢arcgis for javascript-订阅、发布模式的事件处理机制_百度文库你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
ArcGIS API for JavaScript
回复了问题 o 4 人关注 o 3 个回复 o 214 次浏览 o
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 21 次浏览 o
o 来自相关话题
webstyleSymbol中的真实场景中的样式符号Esri Web Style Symbols可以自定义symbol吧,如果可以怎么在arcgis online中创建自己的symbol然后自己调用使用该符号呢,我觉得可以自定义符号,因为在api4.4中就增加了许多真实场景中symbol,我该怎么做呢?
回复了问题 o 3 人关注 o 2 个回复 o 90 次浏览 o
o 来自相关话题
想咨询一下,ArcGIS地图点击事件,我想在点击地图时取得地图的位置坐标,我想实现的功能是在地图上添加一些动态资源数据,点击地图时取得地图的坐标,存入数据库;其次,我想把数据库的数据读取出来显示在地图上,全部是点数据,该怎么做
回复了问题 o 2 人关注 o 1 个回复 o 57 次浏览 o
o 来自相关话题
后台用springboot,场景例如有:
前端出来一个点的x,y坐标和缓冲半径,在后台要做出这个点的缓冲区(结果是个面)并输出wkt格式(到前端)
前端传入两个面(wkt格式),到后台要构成几何对象并求这两个面的相交(intersect)部分
回复了问题 o 2 人关注 o 1 个回复 o 56 次浏览 o
o 来自相关话题
如图我想给Home小部件添加点击事件但是没有click事件,以下是我尝试方法,都不行:
1.该对象有一个on()方法,通过on(&click&,function(){}),添加事件,点击改小部件没反应。
2.获取该dom节点对象来添加事件,但是小部件的节点属性是空的没法获取到节点对象。
3.给该小部件设置id属性值,通过dijit.byId()获取节点对象
回复了问题 o 2 人关注 o 1 个回复 o 46 次浏览 o
o 来自相关话题
比如 ,在web端,选择固定范围,打印固定比例尺的地图?
回复了问题 o 2 人关注 o 1 个回复 o 83 次浏览 o
o 来自相关话题
arcgis Api for java script 4.4部署离线环境的时候把dojo.js和init.js里的[HOSTNAME_AND_PATH_TO_JSAPI]改成本地文件的网络地址之后,代码引入之后加载的底图出不来。。。
发起了问题 o 1 人关注 o 0 个回复 o 27 次浏览 o
o 来自相关话题
arcgis api4.3支持webgl,和three.js的外部模型,为什么当调用移除外部模型的时候会报错?
我的代码:
externalRenderers.add(view, myExternalRenderer);添加外部模型的方法没有错
externalRenderers.remove(view, myExternalRenderer);移除外部模型的方法报错,
发起了问题 o 1 人关注 o 0 个回复 o 24 次浏览 o
o 来自相关话题
各位大神,基于arcgis for js 4.x 的百度echart3.x 迁徙图一直没有整合成功。希望成功整合的各位大神 能提供一份事例,非常感谢!
发起了问题 o 1 人关注 o 0 个回复 o 47 次浏览 o
o 来自相关话题
画了一段轨迹,在1、2、3、4四个点的位置上设置时间点,这4个点的坐标已知,如何获得1到2、2到3、3到4这三条线段?这3条线段需要与画的轨迹重合,我需要分别用这3条线段结合时间点做空间查询
发起了问题 o 1 人关注 o 0 个回复 o 32 次浏览 o
o 来自相关话题
FeatureLayer applyEdits这个例子,在4.3版本里是可以通过点击事件而显示事件详情的,不知道为什么更新到4.4之后,点击不了了,只能单纯的添加事件。是我的皖苏问题还是什么???
回复了问题 o 3 人关注 o 2 个回复 o 80 次浏览 o
o 来自相关话题
ArcGIS API for JavaScript是否是开源的呢?
【解决办法】:
API没有这个接口,需要自己实现这个逻辑。
思路:监听map的 extent change事件,如果新的extent超出了所需的范围,使用setextent把其设置为允许的范围之内
【解决办法】:
API没有这个接口,需要自己实现这个逻辑。
思路:监听map的 extent change事件,如果新的extent超出了所需的范围,使用setextent把其设置为允许的范围之内
【解决办法】:
在 /en/downloads/ 可以下载到最新版本的离线api 以及文档(Download for hosting locally 下)
下载了API的zip包之后解压 找到i...
【解决办法】:
在 /en/downloads/ 可以下载到最新版本的离线api 以及文档(Download for hosting locally 下)
下载了API的zip包之后解压 找到intall.htm 文件,用IE 或者其他浏览器打开,里面有详细的离线部署介绍:
以iis上的部署为例,把api中的内容拷贝到 iis 目录下:例如 C:\Inetpub\wwwroot\arcgis_js_api\library
修改其中的两个文件 “C:\Inetpub\wwwroot\arcgis_js_api\library3.11\3.11\init.js ” 和 “C:\Inetpub\wwwroot\arcgis_js_api\library3.11\3.11\dojo\dojo.js” ,用文本编辑器打开以上文件,在其中搜索“[HOSTNAME_AND_PATH_TO_JSAPI]” (无引号)把其替换为web 路径,例如本机的ip 是 192.168.1.100的话,就把两个文件中的“[HOSTNAME_AND_PATH_TO_JSAPI]” 全部替换为 192.168.1.100/arcgis_js_api/library/3.11/3.11/ (无引号)
注意本机部署的版本和相对路径可能与以上例子略有不同,根据实际情况自己做灵活修改。
Element layer 中间放textblock,然后给textblock设定上elementlayer的 extent attach property,这样,textblock 就限定在extent范围内,随着地图缩放而缩放了
Element layer 中间放textblock,然后给textblock设定上elementlayer的 extent attach property,这样,textblock 就限定在extent范围内,随着地图缩放而缩放了
【解决办法】:
js api 一般建议不要用相对路径部署,js api 小文件很多,移动不便,切一旦相对路径发生修改,需要修改对应的init.js 和 dojo.js 非常麻烦。 js api 不单单是init.js 文件,这个文件内部还是会加载其他脚本,你这...
【解决办法】:
js api 一般建议不要用相对路径部署,js api 小文件很多,移动不便,切一旦相对路径发生修改,需要修改对应的init.js 和 dojo.js 非常麻烦。 js api 不单单是init.js 文件,这个文件内部还是会加载其他脚本,你这都是404错误,说明相对路径还是配置错误。 如果一定要修改的话可以使用以下方法: 找到init.js 文件,用记事本打开,搜索 baseUrl:(location.protocol === ''file:'' ? ''http:'' : location.protocol) + ''//'' + [HOSTNAME_AND_PATH_TO_JSAPI]dojo 把其替换为 baseUrl:location.href.replace(/\/[^\/]+\$/,/)+dojo dojo文件夹下的dojo.js 也做相同修改 这样例如你的程序是aaa.html 必须放在和init.js 同一个文件夹下,然后aaa.html 引用js api可以直接写为: 另外,和js api的其他所有文件夹也必须放在这个文件夹下,包括: xstyle\ put-selector\ esri\ dojox\ dojo\ dijit\ dgrid\
【解决办法】:
如果前端通过 geometry service的方式,通过arcgis server的服务计算显然无法达到性能上的即时计算效果。
建议使用前端的geometry engine类进行前端的量测计算,可以计算 4326和 102100坐标系的长度面...
【解决办法】:
如果前端通过 geometry service的方式,通过arcgis server的服务计算显然无法达到性能上的即时计算效果。
建议使用前端的geometry engine类进行前端的量测计算,可以计算 4326和 102100坐标系的长度面积等简单几何计算,参考demo:
/javascript/jssamples/ge_geodesic_buffers.html
【解决办法】:
AMD 是 dojo新一代的加载模块的方法,和传统的dojo.require 加载方式相比,代码更加简洁,依赖项目有明确定义,并避免使用全局变量,模块ID可以映射到不同的路径,在浏览器中的支持更好,对cdn的支持更好。
具体参考文档:htt...
【解决办法】:
AMD 是 dojo新一代的加载模块的方法,和传统的dojo.require 加载方式相比,代码更加简洁,依赖项目有明确定义,并避免使用全局变量,模块ID可以映射到不同的路径,在浏览器中的支持更好,对cdn的支持更好。
具体参考文档:http://requirejs.org/docs/whyamd.html
/javascript/jshelp/inside_dojo_amd.html
【解决办法】:
参考以下代码:
var rightTableSource = new LayerDataSource();
rightTableSource.dataSource = new TableDataSource({
【解决办法】:
参考以下代码:
var rightTableSource = new LayerDataSource();
rightTableSource.dataSource = new TableDataSource({
workspaceId: [workspaceid],
dataSourceName: [tablename]
var leftTableSource = new LayerMapSource({
mapLayerId: 0
var joinDataSource = new JoinDataSource({
joinType: left-outer-join,
leftTableKey: Name,
rightTableKey: Name,
leftTableSource: leftTableSource,
rightTableSource: rightTableSource
var layerDataSource = new LayerDataSource();
layerDataSource.dataSource = joinDataS
var featureLayer = new FeatureLayer([urltomapservice]/dynamicLayer, {
id: featureLayer,
mode: FeatureLayer.MODE_ONDEMAND,
source: layerDataSource ,
outFields:
【解决办法】:
当前js端实现buffer操作以及其他Geometry的操作,有两种方式:
方式一:在前端通过GeometryEngine
方式二:调用服务器端通过GeometryServices实现
其中GeometryEngine的buffer操作根...
【解决办法】:
当前js端实现buffer操作以及其他Geometry的操作,有两种方式:
方式一:在前端通过GeometryEngine
方式二:调用服务器端通过GeometryServices实现
其中GeometryEngine的buffer操作根据数据的参考类型不同,而需选用匹配的buffer()方法或者geodesicbuffer()方法。 两者区别为buffer()主要针对投影坐标而geodesicbuffer()针对地理坐标系。
geodesicbuffer()针对地理坐标系和web mercator的投影坐标进行buffer操作,当输入为地理坐标系是其仅支持wgs-1984(wkid:4326)的地理坐标系。其他的地理坐标系无法使用Geometryengine。此时需要选用方式二。即使用GeometryService.buffer()的方法在服务器端进行操作。
故失败的原因是选择的buffer的方式不正确。
【解决办法】:
可以使用文本替换软件 Find and Replace 把离线文档中引用到的在线js 和 css 替换为本地的:
软件下载地址 /
使用方法,假设ArcGIS API fo...
【解决办法】:
可以使用文本替换软件 Find and Replace 把离线文档中引用到的在线js 和 css 替换为本地的:
软件下载地址 /
使用方法,假设ArcGIS API for JavaScript 离线版帮助文档部署在 IIS wwwroot的 sdk目录下,本地JS API 离线版已经部署在 IIS wwwroot\js\3.16 文件夹下,
打开fnr.exe,选择目标路径 wwwroot\sdk,选择替换目标文本 /3.16/,替换为 http://localhost/js/3.16/,参考下图,同理css文件也可以做相应的替换
1.z0./.jpg
经过测试,Esri已将其标记为bug,bug代号为BUG-(#BUG- Adding and removing graphics from a SceneView causes a memory leak when usin...
经过测试,Esri已将其标记为bug,bug代号为BUG-(#BUG- Adding and removing graphics from a SceneView causes a memory leak when using the 4.0 JavaScript API)。
由此bug给大家带来的不便我们深感抱歉。感谢徐先生检测并提出该问题。
【解决办法】:
这个功能将在4.1版本支持,目前API是不支持的 wrapAround180 (wrap features around the Dateline) Coming soon 4.1 参考链接: https://developers.arcgis...
【解决办法】:
这个功能将在4.1版本支持,目前API是不支持的 wrapAround180 (wrap features around the Dateline) Coming soon 4.1 参考链接: /javascript/latest/guide/functionality-matrix/index.html
【解决办法】:
关于服务背景色的设置,有两种方法:
方法一:发布服务前对数据进行设置
可以设置地图文档mxd的Background,之后再发布服务。
1)如果是发布缓存地图服务,需要设置切片格式为JPEG。这样就会以地图文档中的Background...
【解决办法】:
关于服务背景色的设置,有两种方法:
方法一:发布服务前对数据进行设置
可以设置地图文档mxd的Background,之后再发布服务。
1)如果是发布缓存地图服务,需要设置切片格式为JPEG。这样就会以地图文档中的Background作为背景色来创建切片。但是切片之外的区域由于没有切片,自然也就不会有背景色。 (补充一点:如果mxd的Background设置为透明,切片格式设置为JPEG,那么最终切片中背景色会显示为白色。 )
2)如果是发布动态地图服务,发布服务时对参数没有特殊要求。但是客户端在调用服务出图时,如果图片格式设置为png或者gif等,背景色需要设置为不透明;如果图片格式设置为jpg或者bmp,对背景色是否透明无要求。整个出图区域都会显示背景色。
方法二:对map对象进行设置
如果是通过 ArcGIS API for JavaScript 调用服务,可以直接为map div元素设置背景色,例如:
background-color:#F3F;
回复了问题 o 4 人关注 o 3 个回复 o 214 次浏览 o
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 21 次浏览 o
o 来自相关话题
webstyleSymbol中的真实场景中的样式符号Esri Web Style Symbols可以自定义symbol吧,如果可以怎么在arcgis online中创建自己的symbol然后自己调用使用该符号呢,我觉得可以自定义符号,因为在api4.4中就增加了许多真实场景中symbol,我该怎么做呢?
回复了问题 o 3 人关注 o 2 个回复 o 90 次浏览 o
o 来自相关话题
想咨询一下,ArcGIS地图点击事件,我想在点击地图时取得地图的位置坐标,我想实现的功能是在地图上添加一些动态资源数据,点击地图时取得地图的坐标,存入数据库;其次,我想把数据库的数据读取出来显示在地图上,全部是点数据,该怎么做
回复了问题 o 2 人关注 o 1 个回复 o 57 次浏览 o
o 来自相关话题
后台用springboot,场景例如有:
前端出来一个点的x,y坐标和缓冲半径,在后台要做出这个点的缓冲区(结果是个面)并输出wkt格式(到前端)
前端传入两个面(wkt格式),到后台要构成几何对象并求这两个面的相交(intersect)部分
回复了问题 o 2 人关注 o 1 个回复 o 56 次浏览 o
o 来自相关话题
如图我想给Home小部件添加点击事件但是没有click事件,以下是我尝试方法,都不行:
1.该对象有一个on()方法,通过on(&click&,function(){}),添加事件,点击改小部件没反应。
2.获取该dom节点对象来添加事件,但是小部件的节点属性是空的没法获取到节点对象。
3.给该小部件设置id属性值,通过dijit.byId()获取节点对象
回复了问题 o 2 人关注 o 1 个回复 o 46 次浏览 o
o 来自相关话题
比如 ,在web端,选择固定范围,打印固定比例尺的地图?
回复了问题 o 2 人关注 o 1 个回复 o 83 次浏览 o
o 来自相关话题
arcgis Api for java script 4.4部署离线环境的时候把dojo.js和init.js里的[HOSTNAME_AND_PATH_TO_JSAPI]改成本地文件的网络地址之后,代码引入之后加载的底图出不来。。。
发起了问题 o 1 人关注 o 0 个回复 o 27 次浏览 o
o 来自相关话题
arcgis api4.3支持webgl,和three.js的外部模型,为什么当调用移除外部模型的时候会报错?
我的代码:
externalRenderers.add(view, myExternalRenderer);添加外部模型的方法没有错
externalRenderers.remove(view, myExternalRenderer);移除外部模型的方法报错,
发起了问题 o 1 人关注 o 0 个回复 o 24 次浏览 o
o 来自相关话题
各位大神,基于arcgis for js 4.x 的百度echart3.x 迁徙图一直没有整合成功。希望成功整合的各位大神 能提供一份事例,非常感谢!
发起了问题 o 1 人关注 o 0 个回复 o 47 次浏览 o
o 来自相关话题
画了一段轨迹,在1、2、3、4四个点的位置上设置时间点,这4个点的坐标已知,如何获得1到2、2到3、3到4这三条线段?这3条线段需要与画的轨迹重合,我需要分别用这3条线段结合时间点做空间查询
发起了问题 o 1 人关注 o 0 个回复 o 32 次浏览 o
o 来自相关话题
FeatureLayer applyEdits这个例子,在4.3版本里是可以通过点击事件而显示事件详情的,不知道为什么更新到4.4之后,点击不了了,只能单纯的添加事件。是我的皖苏问题还是什么???
回复了问题 o 3 人关注 o 2 个回复 o 80 次浏览 o
o 来自相关话题
ArcGIS API for JavaScript是否是开源的呢?
发表了文章 o 3 个评论 o 74 次浏览 o
o 来自相关话题
ESRI官网悄无声息突然更新4.4和3.21,公众号也没有什么消息。照例,给大家看看这次更新有什么新特性吧。
原文出处(原文阅读效果更佳):原文链接
官方更新日志:点我,比较详细。我在这里抽一些主干作为说明。
1.1 支持更强大的WebMap
为了支持更强大的WebMap,官方开发了三个新的图层:WMSLayer、WMTSLayer、MapNotesLayer。
发表了文章 o 0 个评论 o 37 次浏览 o
o 来自相关话题
这个例子相当复杂。我先简单说说这个例子是干啥的。
在UI上,提供了一个下拉框、两个滑动杆,以确定三个参数,使用这三个参数进行空间查询。这个例子就颇带空间查询的意思了。
第一个参数是油井类型,第二个参数是油井的缓冲半径,第三个参数是地震级别。
给定油井的类型,给定油井的缓冲半径(缓冲区分析生成),给定地震级别,就能在油井附近以这个缓冲半径为圆搜索出符合给定地震级别的地震点。
这个例子是干嘛的呢?
发表了文章 o 0 个评论 o 42 次浏览 o
o 来自相关话题
先看结果截图吧(不看过程可以直接看总结,在文末):
随便点击了两个城市斑块,出现结果如图。
我来解读一下这结果和以前的有什么不同:
这个例子使用了PopupTemplate,数据是Layer(使用PortalID创建的Layer)。
但是我们看到图中有个地方不同:当Percent change is这个东西是负数的时候,就是红色+红色下箭头,反之则是绿色字+绿色上箭头。
实际上,这两个箭头是两个
发表了文章 o 0 个评论 o 54 次浏览 o
o 来自相关话题
有好些网友问我怎么使用Server发布的地图服务了,其实非常的简单。
我在这里先声明:不提供Server软件,需要的请自行使用互联网搜索资源;
不阐述Server如何发布各各种服务,但是我会给出官方的文档(点我),发布服务其实各种老教程都很多了。
【软件准备】
·Windows 64位以上的系统,XP可以歇菜了,Server是64位原生软件;//Linux发行版也可以,能用Server
发表了文章 o 0 个评论 o 28 次浏览 o
o 来自相关话题
前阵子对ArcGIS API For JavaScript的网络分析有兴趣,但是不知道其数据是如何获取的。
查阅API知道,AJS的网络分析只有三个功能:最短路径(RouteTask)、最近设施点(ClosestFacilityTask)和服务区(ServiceAreaTask)。
而这三个分析类依赖的是ArcGIS Server上的NAServer(网络分析服务),于是
如何发布NAServer
发表了文章 o 0 个评论 o 36 次浏览 o
o 来自相关话题
终于到最后一篇了,可喜可贺。
本例先说明了如何进行单点的高程差分析,然后说明了道路的起伏分析。前者很直观地比较了两个年份的高程数据之间的差值,体现山区的高程变化(有啥用啊?)后者,一条路上的起点终点起伏多少,可以给驾驶导航提供更多样化的数据。
本例使用了高程图层和RouteTask。
本例对应的官方例子是:Query Elevation (Points)和Query Elevation (Line
发表了文章 o 0 个评论 o 30 次浏览 o
o 来自相关话题
上一篇中提到,空间搜索小部件是Search这个类的实例化,作为视图的ui属性添加进去后,视图就会出现搜索框了。
这节的主体代码和上篇几乎一致,区别就在上篇提及的sources属性。
先看看结果:
由于不太清楚要素图层里有什么东西,随便输了个字母匹配,结果如图,中央出现了一个图案并弹窗。
开始讲课!
给出引用require(
&esri/Map&,
发表了文章 o 0 个评论 o 33 次浏览 o
o 来自相关话题
今天“ArcGIS极客说”公众号推送了这两个大版本的更新,吓得我赶紧撸了一篇新博客。
这里就不写代码验证了,作为新特性小节简单介绍一下!~
1. 更强大的FeatureLayer
在4.3版本之前,FeatureLayer的绘制能力有限。在4.3版本中,2D的绘制和查询能力得到了很大的改进,缩短了请求和绘制的时间,绘制的时候会首先绘制地图中心的要素。下面示例加载的webmap中,
发表了文章 o 0 个评论 o 48 次浏览 o
o 来自相关话题
要说网页端最经典的GIS应用,非网络分析莫属了。
什么?你没用过?百度高德谷歌地图的路线分析就是活生生的例子啊!只不过它们是根据大实际背景优化了结果显示而已。
这个例子使用RouteTask进行网络分析,我会先讲讲什么是RouteTask,再讲讲这个例子是怎么用的,这个例子代码量不多。
在官方的例子中,标题为:SimpleRouting - RouteTask
点击两个点,安静等待十
发表了文章 o 0 个评论 o 22 次浏览 o
o 来自相关话题
Task这个东西很有用,是AJS中用于解决各种乱七八糟任务的一个类。它有很多子类,有用于空间分析的,有用于空间查询的,等等。
这篇作为补充学习的第一篇,也是进阶学习的第一篇,我就改个写法。
我将使用思维导图,更好呈现逻辑信息。
Task类的继承关系
Task类继承自Accessor类,它又有17个子类。别担心,各取所需,很少能用上超过5个子类的AJS程序,除非是一个超大的AJS集成系统。
发表了文章 o 0 个评论 o 35 次浏览 o
o 来自相关话题
上一篇写道,使用Query类进行查询featureLayer图层的要素,也简单介绍了QueryTask类的使用。
这一篇博文继续推进,使用Query类和QueryTask类进行空间查询,查询USA的著名山体点要素。
同样的,只介绍重点。本章官方名字是:Query using QueryTask
照常,先看看结果:(默认三个参数都不动,直接点击按钮)
出现了绿色的圆锥体,点击圆锥体可以出现定制好
发表了文章 o 0 个评论 o 56 次浏览 o
o 来自相关话题
这个就颇有插值分析的样子了。也可以说是密度分析。做出来就是一个热力地图的样子。
比如,人口密度,降雨分布等。这都可以由这个例子做出来类似的。
由于上一篇已经介绍过Geoprocessor类和ParameterValue类了,所以这节就略去这些内容。想知道的同学可以点击这里,看上一篇相关内容。
与上一节不同的是,使用的不是execute()方法了,而是submitJob()方法,这是一个异步操作方法
ArcGIS API for JavaScript是当前主流的基于web的开发工具,可开发二三维的web应用程序。
ArcGIS API for JavaScript是当前主流的基于web的开发工具,可开发二三维的web应用程序。
获得 14 次赞同, 1 次感谢
获得 14 次赞同, 3 次感谢
获得 9 次赞同, 3 次感谢
获得 6 次赞同, 0 次感谢
获得 4 次赞同, 2 次感谢ArcGis-javaScript最全的中文API_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ArcGis-javaScript最全的中文API
上传于|0|0|文档简介
&&这绝对是最全的ArcGis-for-javaScript中文API
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩134页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢下次自动登录
现在的位置:
& 综合 & 正文
ArcGIS.Server.9.3和ArcGIS API for JavaScript实现基本的地图功能(一)
目的:1.ArcGIS API for JavaScript实现基本的地图功能,包括2个地图服务的叠加显示、图层过滤定义、地图视图范围设置、地图鼠标移动事件等。准备工作:1.在ArcGIS.Server.9.3发布一个叫usa的Map Service,并且把这个Service启动起来。2.瓦片数据地图我这里没有现成的就采用Esri提供的rest世界地图数据服务,地址如下:。完成后的效果图:一、ArcGIS API for JavaScript介绍
首先对ArcGIS API for JavaScript作一下介绍了,以下开始简称jsapi,jsapi是ArcGIS Server 9.3新增的一套API框架,它是基于客户端的纯javascript的Api开发方式了,也就是说所有的开发和编写都是在客户端脚本中进行了不在像基于Adf的web appliction一样既要处理编写客户端的js代码又要处理编写服务端的C#代码,这样就大大的降低的开发的复杂度了,而且在客户端的地图操作方面和web appliction比有相当的优势了,虽然功能上并不像Adf那样的强大了但是可以通过gp等也能实现比较复杂的功能如网络分析等,总之和Adf的web appliction相比各有优势了。呀,还有这个js库是基于dojo开发的,对于熟悉dojo的人来说应该是个不错的消息了,如果是prototype或者JQuery就好了,可惜是dojo了不太喜欢这个了,现在就只能一边用一边学了。二、ArcGIS API for JavaScript服务端介绍和部署
Esri没有提供jsapi包的下载但是可以在线的使用esri提供的jsapi服务,如,用户可以在页面中添加对这个地址引用,然后就可以在页面中使用jsapi进行地图功能的开发了,通过这个地址其实是用来获取esri.js、dojo.xd.js、jsapi.js这几个js库了,但是必须是联网的情况下使用了。虽然esri不提供免费下载但是应该是通过光盘发行的吧,我从网上的一个朋友那要了一份jsapi的服务端,也就是可以进行本地部署了不需要联网也可以使用了。
讲一下jsapi的服务端,具体包含的内容如下图:
看上面的结构很简单了jsapi服务端就包括了css、图片、js以及Default.ashx、index.jsp、index.php三个服务端页面文件,这3个服务端页面文件分别针对.net的web服务器、java的web服务器、php的web服务器,这里我是用.net的web服务器的就来看一下Default.ashx的内容:
1&%@ WebHandler Language="C#" Class="jsapi" %& 2 3using S 4using System.W 5using System.IO; 6 7public class jsapi : IHttpHandler { 8
public void ProcessRequest (HttpContext context) { 9
context.Response.ContentType = "application/x-javascript";10
context.Response.Expires = 0;1112
context.Response.WriteFile(context.Server.MapPath("js//esri//esri.js"));13
context.Response.WriteFile(context.Server.MapPath("js//dojo//dojo//dojo.xd.js"));14
context.Response.WriteFile(context.Server.MapPath("js//esri//jsapi.js"));15
public bool IsReusable {18
return false;20
看上面的C#代码了相当的简单了,唯一的功能就是向浏览器输出esri.js、dojo.xd.js、jsapi.js这3个js库了,具体的js库的内容包含在js文件夹中,除了esri的js库还包括的dojo的库了,前面有说过了jsapi是基于dojo开发的。
接下来讲怎么部署jsapi的服务端,打开iis在默认网站下新建虚拟目录(名:jsapi),然后指向到jsapi放的目录,然后设置一下这个虚拟目录的asp.net版本,还有在虚拟目录的文档项添加一个名为Default.ashx文档名并且提到第一位置,然后通过浏览器访问测试一下,比如我的输入:。最后还需要修改一下js/esri/esri.js和js/esri/dijit/css/InfoWindow.css文件,把这2个文件内容里的[FULL_HTTP_URL_TO_JSAPI]替换成你的路径地址,比如我这里替换成。这样就完成了部署工作了。三、上面讲了一堆乱78糟的好像跑题了,接下来开始讲用jsapi实现基本的地图功能开发。1.启动vs新建名为MapApp的ASP.NET Web应用。其实jsapi是纯客户端的开发了不需要vs也不需要.net了,纯html页面就可以了用记事本都可以开发了。我这里为了方便了就用vs2008了,毕竟可以调试js脚本了。2.然后在Default.aspx页面里添加对js库和css文件的引用了,这里的引用地址指向上面部署的jsapi服务端了,不是指向在线的esri的jsapi服务了。具体的说明和代码如下:
&%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MapApp._Default" %&&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&&html xmlns="http://www.w3.org/1999/xhtml" &&head runat="server"&
&title&Map&/title&
&link rel="stylesheet" type="text/css" href="http://mypc/jsapi/js/dojo/dijit/themes/tundra/tundra.css" /&
&script type="text/javascript" src="http://mypc/jsapi/?v=1.1"&&/script&
&script type="text/javascript"&
dojo.require("esri.map");//类似引入命名空间
//用初始化加载地图的方法
function init()
var startExtent = new esri.geometry.Extent(-127., 25.2, -65.5,51.5, new esri.SpatialReference({wkid:4326}) );
var map=new esri.Map("map", {extent:startExtent});
//ArcGISTiledMapServiceLayer用于支持Cache的Tile地图
var tiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer("/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer");
//把tiledMapServiceLayer添加到地图控件中
map.addLayer(tiledMapServiceLayer);
//ArcGISDynamicMapServiceLayer用于支持Dynamic地图
var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer();
//设置要显示的图层
dynamicMapServiceLayer.setVisibleLayers([2,1,0]);
//图层过滤设置,图层0只显示POP的元素
var layerDefs = [];
layerDefs[0] = "POP";
dynamicMapServiceLayer.setLayerDefinitions(layerDefs);
map.addLayer(dynamicMapServiceLayer);
//给地图控件添加视图变化监听事件
dojo.connect(map,"onExtentChange",showExtent);
//给地图控件添加载入完成(onLoad)监听事件
//在onload监听事件里在去添加对鼠标移动和拖拽的监听了,其实不需要多这么一个步骤
dojo.connect(map,"onLoad",function(){
//给地图控件添加载鼠标移动监听事件
dojo.connect(map,"onMouseMove",showCoordinates);
//给地图控件添加载鼠标拖拽监听事件
dojo.connect(map,"onMouseDrag",showCoordinates);
//显示地图范围
function showExtent(extent)
var s="地图范围:&br/&XMin:"+extent.xmin+"&br/&YMin:"+extent.ymin+"&br/&XMax:"+extent.xmax +"&br/&YMax:"+extent.
dojo.byId("info").innerHTML=s;
//显示鼠标坐标
function showCoordinates(event)
var mp=event.mapP
var mp2=event.screenP
dojo.byId("info2").innerHTML="地理坐标:"+mp.x+","+mp.y+"&br/&屏幕坐标:"+mp2.x+","+mp2.y;
//用dojo的addOnLoad方法初始化地图
dojo.addOnLoad(init);
&/script&&/head&&body class="tundra"&
&form id="form1" runat="server"&
&td&&div id="map" style="width:600 height:450 border:1px solid #000;"&&/div&&/td&
&td valign="top"&&div id="info" &&/div&&div id="info2" &&/div&&/td&
&/form&&/body&&/html&
3.这种开发方式实在简单了就不详细描述了具体的看代码和注释了,需要注意的地方就是tiledMapServiceLayer和dynamicMapServiceLayer的添加顺序了,tiledMapServiceLayer和dynamicMapServiceLayer链接地址是rest服务地址了这个和flex api一样了,还有实际项目中最好采用纯hmtl的页面来开发了能节省服务器资源。很简单就这样就完成了地图基本功能的开发。
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 larvarl http请求 的文章

 

随机推荐