如何让PHP服务器使用ArcGIS API for arcgis forjavascriptt?

君,已阅读到文档的结尾了呢~~
arcgis javascript api 路径引用简单说明
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
arcgis javascript api 路径引用简单说明
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口(十二)ArcGISAPIForJavascript之编辑服务器端图层
在现实需求中,我们不仅仅需要编辑客户端图层,也有可能去编辑服务器端图层,要想编辑服务器端的图层,必须要将地图发布为:要素服务。
如何发布要素服务请看:ArcGIS Server发布要素服务
2.需求(服务器端图层编辑)
关于服务器端图层的操作,基本就是增删改查操作,要素服务的查询前面已经介绍过,在此篇博客中主要记录一下关于要素服务的增删改操作,在ArcGIS API for JS中给我们提供了三个类用于要素的增Add,删Delete,改Update,接下来就用这三个类来实现我们的功能。
我们操作的是要素服务的sushelou图层 我们的服务:
注意:宿舍楼图层编号为1
图层的属性信息
首先在页面添加三个按钮(用于实现用户的增删改操作)
&button class=&btn&&添加要素&/button&
&button class=&btn&&删除要素&/button&
&button class=&btn&&修改要素&/button&
&button class=&btn&&查询要素&/button&
添加地图(省略) 创建通用的对象,例如Draw
//用于操作的要素图层,注意我们是操作的宿舍楼图层
var featureLayer = new FeatureLayer(&http://localhost:6080/arcgis/rest/services/Test/ft/FeatureServer/1&,
mode:FeatureLayer.MODE_SNAPSHOT,
outFields: [&*&]
//在添加要素时,利用Draw工具获得geometry对象
var d = new Draw(map, { showTooltips: true });
//要操作的graphic
给相应的按钮添加绑定事件
query(&button&).on(&click&,function(event){
//获得按钮的文本
var value=event.rangeParent.
//根据文本绑定不同的事件
switch(value){
case &添加要素&:
d.activate(Draw.POLYGON);
case &删除要素&:
//创建Graphic对象,删除OBJECTID为34的元素,
//因为OBJECTID是主键,所以只需要指定主键即可
g=new Graphic(&&,&&,{
&OBJECTID&:34
//创建删除对象
var de=new Delete({
&featureLayer&:featureLayer,
&deletedGraphics&:[g]
//执行删除结果
de.performRedo();
//刷新图层
layer.refresh();
case &修改要素&:
//用于修改要素的函数,查询更新为36的要素
updateFeature(36);
case &查询要素&:
//用于查询要素的函数,查询主键为36的要素
searchFeather(36);
如果是添加操作(利用draw添加geometry属性)
//当画图完毕时,添加要素
on(d, &draw-complete&, function (result) {
//要素只赋予了geometry,属性信息为空
var graphic = new Graphic(result.geometry, null,{});
var add=new Add({
&featureLayer&:featureLayer,//给哪一个要素图层添加要素
&addedGraphics&:[graphic]//用于添加的要素
//执行添加函数
add.performRedo();
//刷新视图
layer.refresh();
//关闭绘图对象
d.deactivate();
如果是查询操作
//根据id查询要素
function searchFeather(id,callback){
//得到要素图层的主键属性
var idProperty = featureLayer.objectIdF
//定义查询参数
var query = new Query();
//是否返回几何形状
query.returnGeometry =
//图层的主键名称(根据自己要求修改)
query.objectIds = [id];
//查询条件1=1意思是:只根据主键查询,忽略where子句
query.where = &1=1&;
//进行查询
featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW,function(result){
//如果callback不存在,说明仅仅是查询操作
if(!callback){
//因为我们根据主键查询,一定只有一个元素
var graphic=result[0];
//获得属性
var attributes=graphic.
//得到该属性信息转换成字符串
var result=jsonUtil.stringify(attributes)
//将结果弹出一下
alert(result);
}else//如果callback存在,说明是更新操作
callback(result);
如果是更新操作
//根据id修改要素
function updateFeature(id){
//注意:(第二个参数)这里传入一个回调函数,用于处理查询出来的数据
searchFeather(id,function(result){
//获得旧的要素
var oldgraphic=result[0];
//新的要素
var newgraphic=new Graphic(oldgraphic.toJson());
//将alias属性修改为:修改后的C区
newgraphic.attributes.alias=&修改后的C区&;
//创建更新对象
var update=new Update({
&featureLayer&:featureLayer,
&postUpdatedGraphics&:[newgraphic],//修改之后的要素
&preUpdatedGraphics&:[oldgraphic]//修改之前的要素
//执行刷新操作
update.performRedo();
//刷新视图
layer.refresh();
alert(&修改成功&);
2.2实现结果
2.2.1添加操作
添加要素前:
添加要素后:
2.2.2删除要素操作
删除要素前:
删除要素后:
2.2.3更新要素(可以看到objectid=1的alias属性为&A区宿舍&)
2.2.4当修改之后点击查询按钮结果:
2.3全部代码
&!DOCTYPE html&
&html xmlns=&http://www.w3.org/1999/xhtml&&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&/&
&title&WebGIS&/title&
rel=&stylesheet&
type=&text/css& href=&http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css&/&
rel=&stylesheet&
type=&text/css& href=&http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css& /&
type=&text/script& src=&http://localhost/arcgis_js_api/library/3.17/3.17/init.js&&&/script&
&style type=&text/css&&
.MapClass{
width:100%;
height:500
border:1px solid #000;
&script type=&text/javascript&&
require([&esri/map&,
&dojo/on&,
&dojo/query&,
&esri/layers/ArcGISDynamicMapServiceLayer&,
&esri/toolbars/draw&,
&esri/layers/FeatureLayer&,
&esri/graphic&, &esri/dijit/editing/Add&,
&esri/dijit/editing/Delete&,&esri/dijit/editing/Update&,&esri/tasks/query&,&dojo/json&,
&dojo/domReady!&],
function (Map,on,query, ArcGISDynamicMapServiceLayer, Draw,FeatureLayer,Graphic,Add,Delete,Update,Query,jsonUtil) {
var map = new esri.Map(&MyMapDiv&);
var layer = new ArcGISDynamicMapServiceLayer(&http://localhost:6080/arcgis/rest/services/Test/ft/MapServer&);
map.addLayer(layer);
//用于操作的要素图层,注意我们是操作的宿舍楼图层
var featureLayer = new FeatureLayer(&http://localhost:6080/arcgis/rest/services/Test/ft/FeatureServer/1&,
mode:FeatureLayer.MODE_SNAPSHOT,
outFields: [&*&]
//在添加要素时,利用Draw工具获得geometry对象
var d = new Draw(map, { showTooltips: true });
//要操作的graphic
query(&button&).on(&click&,function(event){
var value=event.rangeParent.
switch(value){
case &添加要素&:
d.activate(Draw.POLYGON);
case &删除要素&:
//创建Graphic对象,删除OBJECTID为34的元素,
//因为OBJECTID是主键,所以只需要指定主键即可
g=new Graphic(&&,&&,{
&OBJECTID&:34
//创建删除对象
var de=new Delete({
&featureLayer&:featureLayer,
&deletedGraphics&:[g]
//执行删除结果
de.performRedo();
//刷新图层
layer.refresh();
case &修改要素&:
//用于修改要素的函数,查询更新为36的要素
updateFeature(1);
case &查询要素&:
//用于查询要素的函数,查询主键为36的要素
searchFeather(1);
//当画图完毕时,添加要素
on(d, &draw-complete&, function (result) {
//要素只赋予了geometry,属性信息为空
var graphic = new Graphic(result.geometry, null,{});
var add=new Add({
&featureLayer&:featureLayer,//给哪一个要素图层添加要素
&addedGraphics&:[graphic]//用于添加的要素
//执行添加函数
add.performRedo();
//刷新视图
layer.refresh();
//关闭绘图对象
d.deactivate();
//根据id修改要素
function updateFeature(id){
//注意:(第二个参数)这里传入一个回调函数,用于处理查询出来的数据
searchFeather(id,function(result){
//获得旧的要素
var oldgraphic=result[0];
//新的要素
var newgraphic=new Graphic(oldgraphic.toJson());
//将alias属性修改为:修改后的A区宿舍
newgraphic.attributes.alias=&修改后的A区宿舍&;
//创建更新对象
var update=new Update({
&featureLayer&:featureLayer,
&postUpdatedGraphics&:[newgraphic],//修改之后的要素
&preUpdatedGraphics&:[oldgraphic]//修改之前的要素
//执行刷新操作
update.performRedo();
//刷新视图
layer.refresh();
alert(&修改成功&);
//根据id查询要素
function searchFeather(id,callback){
//得到要素图层的主键属性
var idProperty = featureLayer.objectIdF
//定义查询参数
var query = new Query();
//是否返回几何形状
query.returnGeometry =
//图层的主键名称(根据自己要求修改)
query.objectIds = [id];
//查询条件1=1意思是:只根据主键查询,忽略where子句
query.where = &1=1&;
//进行查询
featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW,function(result){
//如果callback不存在,说明仅仅是查询操作
if(!callback){
//因为我们根据主键查询,一定只有一个元素
var graphic=result[0];
//获得属性
var attributes=graphic.
//得到该属性信息转换成字符串
var result=jsonUtil.stringify(attributes)
//将结果弹出一下
alert(result);
}else//如果callback存在,说明是更新操作
callback(result);
&div id=&MyMapDiv& class=&MapClass&&&/div&
&button class=&btn&&添加要素&/button&
&button class=&btn&&删除要素&/button&
&button class=&btn&&修改要素&/button&
&button class=&btn&&查询要素&/button&Arcgis API for Javascript入门(一)
Arcgis API for Javascript入门(一)
1、ArcGIS JS API涉及知识快速了解:
1.1REST API:
目前我们在开发过程中使用最多的就是REST服务接口了,REST是一种轻量级的Web Service架构风格,其实现和操作较为简洁,可以完全通过http协议实现。下面是关于REST的一些基础知识:
(1)、在REST中,一切的一切都被认为是一种资源,每个资源由URI标识;
(2)、对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应着HTTP协议提供的GET,POST,PUT,DELETE方法,也就是说使用统一的接口,而不像SOAP风格的服务那样,每个服务的名称都是不同的。
(3)、每一个请求都是一个独立的请求,从客户端到服务器的每个请求都必须包含所有必要的信息,便于理解;
(4)、资源的表现形式则是JSON,XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的形式。
1.2.JavaScript:
JavaScript诞生于1995年,最初的主要目的是用来处理以前由服务器端语言负责的一些输入和验证操作,随着时代的不断发展,他逐渐发展成为了一门强大的编程语言。
下面简单介绍一下JavaScript的一些主要特点:
(1)、脚本语言
JavaScript是一种脚本语言,是解释执行的,它并不像一些高级语言一样需要被提前编译,而是在程序运行的过程中被逐行解释的。
(2)、基于对象的语言
JavaScript是一种基于对象的语言,同时也是可以看做是面向对象的。例如JavaScript的继承方式。
(3)、动态性
JavaScript是动态的,他可以直接对用户或客户的输入做出相应而无需经过web服务程序。例如按下鼠标,移动窗口,选择菜单等都可以作为事件,当事件发生时,可能会引起相应的事件响应。
(4)、跨平台性
JavaScript依赖于浏览器本身,与操作环境无关,只要有能运行浏览器的计算机,并支持JavaScript的浏览器都可以运行。
1.3.Ajax:
Ajax又叫做阿贾克斯,是一种创建交互式网页应用的网页开发技术。如果没有使用ajax的传统网页需要更新内容,必须重载整个网页页面,而ajax可以通过后台与服务器进行少量的数据交换,使网页实现异步更新,这意味着可以在不重新加载网页的情况下,对网页的某部分进行更新。例如新浪微博登录。
1.4.Dojo:
Dojo是一个用JavaScript语言实现的开源工具包,主要由三大模块组成:Core、Dijit、Dojox;
下面介绍一下Dojo的一些主要特点:
(1)、Dojo是一个纯JavaScript库;
(2)、Dojo自身定义了完整的函数库,屏蔽了浏览器的差异;
(3)、Dojo自身定义了界面组件库;
2、ArcGIS JS API开发原理简单解析:
(1)、将Ajs API开发的应用部署到web服务器上,供用户通过浏览器或者移动端进行访问和操作;
(2)、当用户操作web应用或者移动端应用的时候,ajs api会监控用户的操作行为,并相应的将用户的操作按照Arcgis for Server提供的rest api 的格式转换为http请求,设置请求的地址、参数提交给arcgis for server;
(3)、arcgis for server收到rest请求之后根据参数进行处理,得到结果,并将结果转化为json数据,将数据作为REST 请求的响应返回给ajs api,由ajs api对数据进行解析,转换为API中的对象,方便应用将结果可视化的展示在应用中。
3、ArcGIS JS API开发环境搭建:
ArcGIS JS API开发环境可以使用两种部署方式,如下图所示:
我们可以使用以下的IDE进行ajs api的开发:
这里,我个人使用的是Sublime Text3,事实上,由于ajs api的运行实在浏览器上运行的,所以即使你使用记事本也是可以进行开发的,只是效率可能会比较低。
4、ArcGIS JS API重点对象介绍:
Map是承载图层的容器,主要用于呈现地图服务,影像服务,此外还可以展示WMS服务等,Map对象需要依托于html页面中的一个div容器作为根节点。地图中包含有若干图层,一个图层只有被添加到map中才能够显示出来。
Map对象初始化后就包含一个默认的Graphics图层,可以通过map.graphics获取,用户可以通过这个接口自定义图形;
Map对象包含了一个infoWindow;
4.2、Layer
图层是承载服务的载体(GraphicsLayer除外),Arcgis for Server将GIS资源作为服务发布出来,要想在浏览器端看到这些服务,就需要将这些服务与图层之间进行关联,并将其加入到地图中作为一个可视化的图层才能够被客户端使用,不同的服务对应着不同的图层。
所有layer的继承关系图
4.3、Geometry
几何对象用于表示对象的显示形式,在ajs api中,Geometry大体上可以分为下面几类:点,多点,线,矩形,多边和屏幕点,其中Screen是以像素的方式表示的点。下面是所有几何体对象的继承方式:
4.4、Symbol
符号定义了如何GraphicLayer上显示点,线,面和文本,并且定义了几何对象的所有非地理特征方面的外观,包括图形的颜色,边框线宽度,透明度等等。常见的符号类型之间的继承关系如下表所示:
4.5、Graphic
Geometry定义了对象的形状,Symbol定义了图形是如何显示的,Graphic可以包含一些属性信息,并且在JavaScript中还可以使用InfoTemplate定义如何对属性信息进行显示,最终的Graphic则被添加到GraphicsLayer中。
简单来说:Graphic = Geometry + Attributes + Symbol + InfoTemplate,下图可以直观的表示这种关系:
4.6、Render
渲染器是以一个图层为单位来改变其符号的工具,通常Symbol对象改变符号是需要逐个设置的,渲染器则是方便的对图层进行有规律的渲染。API中提供了6种渲染器,他们都继承了Render的抽象类;
4.7、FeatureSet
FeatureSet相当于地理数据库中的一个要素类,是feature的集合,FeatureSet中的每一个feature可能包含Geometry、属性、符号和一个InfoTemplate。如果FeatureSet不包含Geometry,只包含属性,那他相当于一个表。
FeatureSet是我们在使用ajs api与arcgis server进行通信时的一个重要对象,当使用查询、地理处理和路径分析的时候,FeatureSet常常作为这些分析功能的输入和输出参数。
5、ArcGIS JS API事件
在api中有多种实现使用事件监听的方法:dojo/aspect,dojo/_base/connect,on,其中推荐大家使用的是dojo的on函数,考虑到dojo版本的兼容性,对dojo的connect方法也进行适当讲解:
增加、删除事件响应:
On: 增加:
var myUnload=map.on(“unload”,unloadHandler);
myUnload.remove();
Connect:增加:
var myUnload_connect=connect.connect(“map”,”onUnload”,unloadhandler_connect);
删除:connect.disconnect(myUnload_connect);
6、ArcGIS JS API控件
Ajs api提供了许多用来帮助我们快速开发的控件或者小部件,这些控件除了工具条之外,其余都位于esri/dijit中,工具条位于esri/toolbars中;
Api中的所有组件都按照dojo的标准注册成了dijit,在dijit的生命周期中,通过startup方法创建,通过destory方法销毁。
7、关于性能优化:
7.1、使用AMD:
AMD(异步模块定义),采用异步方式加载模块。模块加载不影响后面语句的运行。所有依赖这些模块的语句都定义在一个回调函数中,加载完成之后这个回调函数才会运行。
好处:异步的加载机制,同时下载多个JS文件、减小代码的加载时间;
?不会阻塞浏览器,有更好的性能和灵活性;
?前端标准化,提高代码可维护性;
7.2、对js文件进行压缩
我的热门文章
即使是一小步也想与你分享ArcGIS,Javascrip,web地图,Esri(2)
之前的离线部署工作见上篇博客&。
2.2 IIs服务开启
一、进入Win7的&控制面板&,选择“大图标”显示控制面板,找到“程序和功能”。
二、点击程序和功能,进入程序和功能控制面板,找到右侧的“打开或关闭Windows功能”。
三、点击“打开或关闭Windows功能”,进入Windows功能界面。
展开Internet信息服务,按照下图所示进行选择。
四、单击“确定”,进入安装界面。等待2~3分钟,安装完毕。
五、验证。打开浏览器,输入localhost,出现下图界面证明配置成功
2.3 ArcGIS 部署与配置
(1)下载ArcGIS Server,版本选择10.2;
(2)ArcGIS Server安装。
安装及授权完成后浏览器会跳转到ArcGIS Server Manager页面,让你创建一个站点的页面。选择创建一个新的站点。
创建完成后,进行登录。登录后管理界面如下,通过ArcGIS发布的地图会出现在这里。可以进行统一的管理。
2.4 ArcGIS 部署与配置
(1)下载ArcGIS Desktop,版本选择10.2;
(2)ArcGIS Desktop安装。
安装完成后打开ArcGIS管理器,选择如下。
完成后,打开ArcMap。
3、地图制作与上传
(1)将制作下载好的地图数据用ArcMap打开。
(2)地图数据上传到服务端。
上传完成后,在浏览器输入http://localhost:6080/arcgis/manager/进入地图服务端查看,发现新上传的服务,发布成功。
2013年全国地图数据SHP下载地址:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6979次
排名:千里之外
原创:29篇
转载:31篇
(7)(5)(1)(1)(12)(8)(21)

我要回帖

更多关于 php搭建api服务器 的文章

 

随机推荐