Graphics绘制是webgis基本编辑功能之一,基于Javascript API进行开发很容易联想到其基础功能的提供者--Dojo,point、multipoint、polyline、polygon等基本图形可以很方便的在地图上绘制出来,效果还不错!这里需要引入一个新的库"esri.toolbars.draw"。
Toolbar并不是一个用户接口组件,而是一个Helper类用于在地图上绘制图形,通常由客户端的UI组件来触发所要绘制的具体图形,如通过按钮触发:
Point
用户绘制完成后,将触发事件来完成具体图形的显示:
dojo.connect(tb,
"
onDrawEnd
"
, addGraphic);
了解AO和Ags ADF的开发人员都知道,图形一般由两部分组成,一是所要绘制的几何图形,即geometry,一是绘制图形的显示效果,如SimpleMarkerSymbol,所以在addGraphic方法要完成这两部分的赋值:
function
addGraphic(geometry)
{
var
symbol
=
dojo.byId(
"
symbol
"
).value;
if
(symbol)
{
symbol
=
eval(symbol);
}
else
{
var
type
=
geometry.type;
if
(type
===
"
point
"
||
type
===
"
multipoint
"
)
{
symbol
=
tb.markerSymbol;
}
else
if
(type
===
"
line
"
||
type
===
"
polyline
"
)
{
symbol
=
tb.lineSymbol;
}
else
{
symbol
=
tb.fillSymbol;
}
}
map.graphics.add(
new
esri.Graphic(geometry, symbol));
}
内容目录:
1.各种基本图形绘制
2.选择点要素并以Graphics方式高亮显示
1.在上文对Graphics绘制功能编写基础上,以官方网站上的代码为例,在客户端提供多种基础形状的绘制功能,此时Graphics形状由用户客户端通过toolbar提供的helper方法决定,绘制的显示效果通过一个DropDownList进行选择:
<option value="new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 1), new dojo.Color([0,255,0,0.25]))">Square</option>
Toolbar初始化及事件监听在map.addLayer之前完成:
function
init()
{
map
=
new
esri.Map(
"
map
"
);
dojo.connect(map,
"
onLoad
"
, initToolbar);
map.addLayer(
new
esri.layers.ArcGISTiledMapServiceLayer(
"
http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer
"
));
}
function
initToolbar(map)
{
tb
=
new
esri.toolbars.Draw(map);
dojo.connect(tb,
"
onDrawEnd
"
, addGraphic);
}
构建界面UI之后,可以直接浏览网页,Demo演示地址:
http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/demos/Graphics/graphics.html
2.框选点要素,在很多行业应用中都涉及到,如对银行POI网点选择,电线杆塔统计,烟草销售点业态分析等等,在Javascript API实现这样的功能,需要分两步实现,第一是框选查询,第二是对查询的结果渲染并以Graphics方式显示。
查询功能在后续文章中会详细介绍,这里仅轻笔带过,引入"esri.tasks.query",查询功能实现:
var
queryTask
=
new
esri.tasks.QueryTask(
"
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0
"
);
var
query
=
new
esri.tasks.Query();
query.where
=
"
STATE_NAME = 'Washington'
"
;
query.returnGeometry
=
true
;
query.outFields
=
[
"
CITY_NAME
"
];
queryTask.execute(query, addPointsToMap);
上面URL指向的是另外一个REST服务,addPointsToMap将所有符合条件的点都添加到Map中作为Graphics显示,接下来就是要在这些点中框选点并用不同颜色高亮显示。
function
findPointsInExtent(extent)
{
var
graphics
=
map.graphics.graphics;
var
results
=
[];
var
graphic;
for
(
var
i
=
0
, il
=
graphics.length; i
<
il; i
++
)
{
graphic
=
graphics[i];
//
选择框所包含的点用highlightSymbol高亮显示
if
(extent.contains(graphic.geometry))
{
graphic.setSymbol(highlightSymbol);
results.push(graphic.getContent());
}
//
之前已经highlightSymbol高亮显示的点恢复为原来defaultSymbol显示
else
if
(graphic.symbol
==
highlightSymbol)
{
graphic.setSymbol(defaultSymbol);
}
}
}
功能开发就完成了,剩下的就是加上对事件的监听以及客户端UI编辑。
function
initToolbar(map)
{
var
tb
=
new
esri.toolbars.Draw(map);
dojo.connect(tb,
"
onDrawEnd
"
, findPointsInExtent);
tb.activate(esri.toolbars.Draw.EXTENT);
}
分享到:
相关推荐
本书旨在通过一系列深入浅出的文章介绍JavaScript在现代Web开发中的应用。下面将根据提供的部分目录内容,详细解析各章节所涉及的重要知识点。 #### 章节一:表格的乐趣(Fun with Tables) **知识点:** - **HTML...
这本书深入浅出地介绍了如何利用JavaScript和HTML5的新特性来创建引人入胜的网页动画。 HTML5是现代网页开发的标准,它为开发者提供了许多新特性,包括离线存储、表单控件的增强、媒体元素以及用于动画的Canvas和...
"Learning Raphael JS Vector Graphics"这个配套源码是学习Raphael库的理想资源,对于希望掌握JavaScript矢量图形绘制技术的开发者来说,它是一份非常宝贵的学习材料。 Raphael的核心特性包括: 1. **跨浏览器兼容...
本书《Learning Web Design》深入浅出地讲解了HTML、CSS和JavaScript的基本概念和技术细节,适合初学者入门。作者Jennifer Niederst Robbins以其丰富的教学经验,引导读者理解网页如何工作,教授如何使用这些技术来...
... ... HTML5并非单一标准,而是一系列相关技术和API的集合...本书《HTML5移动开发即学即用》深入浅出地介绍了HTML5的核心技术,并通过丰富的示例帮助读者快速掌握这些API的实际应用方法,是一本极具实用价值的参考书籍。
- **绘制API的基础**:概述AS3绘图API的功能,包括如何创建和管理`Graphics`对象。 - **Graphics类**:详细介绍`Graphics`类的属性和方法,以及如何使用它来绘制基本形状。 - **绘制线条和曲线**:讲解如何使用`...
《深入浅出-HTML5编程》是一本专为初学者设计的HTML5编程教程,由Eric Freeman和Elisabeth Robson合著。这本书通过Head First系列的独特教学方式,旨在帮助读者轻松掌握HTML5的核心概念和技术。以下是根据标题、描述...
综上所述,《SVG精髓++第2版》深入浅出地介绍了SVG的核心概念和技术细节,不仅覆盖了SVG的基础知识,还探讨了高级主题如动画和优化等。无论是初学者还是经验丰富的开发者,都能从中获得有价值的信息和灵感。
这部分内容深入浅出地介绍了Android程序的设计基础,从项目结构到UI设计,再到事件处理机制,帮助读者建立起对Android应用开发的整体认识。 #### 四、用户界面开发 **4.1 用户界面开发详解** - **4.1.1 用户界面...
4. **图形绘制**:Canvas API提供了一种用JavaScript进行动态图形绘制的方法,SVG(Scalable Vector Graphics)则用于插入矢量图。 5. **表单控件增强**:新添加的表单控件如、等,提供了更好的用户输入体验。 CSS...
4. **图形绘制**:Canvas元素提供了JavaScript API来绘制动态图形,SVG(Scalable Vector Graphics)则支持矢量图的创建,两者为开发者提供了丰富的图形处理能力。 5. **表单控件增强**:HTML5新增了多种表单输入...
《HTML5:Up and Running》这本书由O'Reilly出版社出版,以其清晰易懂的风格,深入浅出地介绍了HTML5的各项技术。 首先,HTML5的基础知识包括语义化标签的引入,如、、、和等,这些标签有助于提高网页内容的结构和...
《HTML5 For Web Designers》是一本专门为Web设计师编写的指南,它深入浅出地介绍了HTML5这一现代网页设计的核心语言。HTML5是超文本标记语言(HTML)的最新版本,自2008年发布以来,已经逐渐成为构建响应式、交互性...
在《HTML5高级程序设计(完整版)》这本书中,作者深入浅出地介绍了HTML5的各种特性,帮助开发者提升网页制作的技能。 首先,HTML5引入了新的结构元素,如、、、和等,这些元素使得网页内容的组织更加清晰,增强了...
《HTML5开发精要与实例详解》这本书深入浅出地介绍了HTML5的新特性和实践案例,非常适合希望深入了解HTML5并将其应用于实际项目中的开发者阅读。通过本书的学习,读者不仅可以掌握HTML5的基础知识,还能学会如何利用...
韩顺平老师的HTML5培训笔记深入浅出地讲解了这一技术,帮助学习者掌握最新的网页制作技能。 在韩顺平老师的课程中,首先会讲解HTML5的基础结构,包括DOCTYPE声明、语义化元素如、、、、和等,这些元素使得网页内容...
本教程“HTML5非常好的教程”是一个深入浅出的学习资源,旨在帮助初学者和进阶者全面掌握HTML5的相关知识。 在HTML5中,重要的新特性包括: 1. **离线存储**:通过`Application Cache`,网页可以缓存资源,即使在...
这份2012年的学习资料可能包含了《Oreilly.HTML5.Up.and.Running.Aug.2010.pdf》这本书,这本书通常会深入浅出地讲解这些概念,并提供实践案例,帮助读者理解并掌握HTML5的各项特性。通过阅读这本书,初学者不仅可以...