`
sungang_1120
  • 浏览: 323811 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

深入浅出 Javascript API(四)--绘制 Graphics

 
阅读更多

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);
}
分享到:
评论

相关推荐

    The Art&Science of JavaScript.pdf

    本书旨在通过一系列深入浅出的文章介绍JavaScript在现代Web开发中的应用。下面将根据提供的部分目录内容,详细解析各章节所涉及的重要知识点。 #### 章节一:表格的乐趣(Fun with Tables) **知识点:** - **HTML...

    Foundation HTML5 Animation with JavaScript - HTML5动画设计基础

    这本书深入浅出地介绍了如何利用JavaScript和HTML5的新特性来创建引人入胜的网页动画。 HTML5是现代网页开发的标准,它为开发者提供了许多新特性,包括离线存储、表单控件的增强、媒体元素以及用于动画的Canvas和...

    Learning Raphael JS Vector Graphics 配套源码

    "Learning Raphael JS Vector Graphics"这个配套源码是学习Raphael库的理想资源,对于希望掌握JavaScript矢量图形绘制技术的开发者来说,它是一份非常宝贵的学习材料。 Raphael的核心特性包括: 1. **跨浏览器兼容...

    HTML 5 CSS Javascript

    本书《Learning Web Design》深入浅出地讲解了HTML、CSS和JavaScript的基本概念和技术细节,适合初学者入门。作者Jennifer Niederst Robbins以其丰富的教学经验,引导读者理解网页如何工作,教授如何使用这些技术来...

    HTML5移动开发即学即用电子书

    ... ... HTML5并非单一标准,而是一系列相关技术和API的集合...本书《HTML5移动开发即学即用》深入浅出地介绍了HTML5的核心技术,并通过丰富的示例帮助读者快速掌握这些API的实际应用方法,是一本极具实用价值的参考书籍。

    ActionScript3.0开发人员指南

    - **绘制API的基础**:概述AS3绘图API的功能,包括如何创建和管理`Graphics`对象。 - **Graphics类**:详细介绍`Graphics`类的属性和方法,以及如何使用它来绘制基本形状。 - **绘制线条和曲线**:讲解如何使用`...

    srqchtmlbcpdf_itmop.com.zip

    《深入浅出-HTML5编程》是一本专为初学者设计的HTML5编程教程,由Eric Freeman和Elisabeth Robson合著。这本书通过Head First系列的独特教学方式,旨在帮助读者轻松掌握HTML5的核心概念和技术。以下是根据标题、描述...

    SVG精髓++第2版

    综上所述,《SVG精髓++第2版》深入浅出地介绍了SVG的核心概念和技术细节,不仅覆盖了SVG的基础知识,还探讨了高级主题如动画和优化等。无论是初学者还是经验丰富的开发者,都能从中获得有价值的信息和灵感。

    android开发资料

    这部分内容深入浅出地介绍了Android程序的设计基础,从项目结构到UI设计,再到事件处理机制,帮助读者建立起对Android应用开发的整体认识。 #### 四、用户界面开发 **4.1 用户界面开发详解** - **4.1.1 用户界面...

    HTML5.and.CSS3).Brian.P.Hogan.文字版

    4. **图形绘制**:Canvas API提供了一种用JavaScript进行动态图形绘制的方法,SVG(Scalable Vector Graphics)则用于插入矢量图。 5. **表单控件增强**:新添加的表单控件如、等,提供了更好的用户输入体验。 CSS...

    HTML5&CSS;权威代码

    4. **图形绘制**:Canvas元素提供了JavaScript API来绘制动态图形,SVG(Scalable Vector Graphics)则支持矢量图的创建,两者为开发者提供了丰富的图形处理能力。 5. **表单控件增强**:HTML5新增了多种表单输入...

    HTML5:Up.and.Running

    《HTML5:Up and Running》这本书由O'Reilly出版社出版,以其清晰易懂的风格,深入浅出地介绍了HTML5的各项技术。 首先,HTML5的基础知识包括语义化标签的引入,如、、、和等,这些标签有助于提高网页内容的结构和...

    HTML5 For Web Designers

    《HTML5 For Web Designers》是一本专门为Web设计师编写的指南,它深入浅出地介绍了HTML5这一现代网页设计的核心语言。HTML5是超文本标记语言(HTML)的最新版本,自2008年发布以来,已经逐渐成为构建响应式、交互性...

    HTML5高级程序设计(完整版).pdf

    在《HTML5高级程序设计(完整版)》这本书中,作者深入浅出地介绍了HTML5的各种特性,帮助开发者提升网页制作的技能。 首先,HTML5引入了新的结构元素,如、、、和等,这些元素使得网页内容的组织更加清晰,增强了...

    《HTML 5开发精要与实例详解》.(陆凌牛).[PDF]

    《HTML5开发精要与实例详解》这本书深入浅出地介绍了HTML5的新特性和实践案例,非常适合希望深入了解HTML5并将其应用于实际项目中的开发者阅读。通过本书的学习,读者不仅可以掌握HTML5的基础知识,还能学会如何利用...

    韩顺平 HTML5培训笔记

    韩顺平老师的HTML5培训笔记深入浅出地讲解了这一技术,帮助学习者掌握最新的网页制作技能。 在韩顺平老师的课程中,首先会讲解HTML5的基础结构,包括DOCTYPE声明、语义化元素如、、、、和等,这些元素使得网页内容...

    HTML5非常好的教程

    本教程“HTML5非常好的教程”是一个深入浅出的学习资源,旨在帮助初学者和进阶者全面掌握HTML5的相关知识。 在HTML5中,重要的新特性包括: 1. **离线存储**:通过`Application Cache`,网页可以缓存资源,即使在...

    2012最新Html5学习资料

    这份2012年的学习资料可能包含了《Oreilly.HTML5.Up.and.Running.Aug.2010.pdf》这本书,这本书通常会深入浅出地讲解这些概念,并提供实践案例,帮助读者理解并掌握HTML5的各项特性。通过阅读这本书,初学者不仅可以...

Global site tag (gtag.js) - Google Analytics