arcgis api for javascrpit extent()与execute()
来源:互联网 发布:淘宝神笔下载 编辑:程序博客网 时间:2024/05/29 12:43
按道理来说,extent与execute应该不会相互影响。
今天就碰上了一个奇怪的问题,如果把extent注释掉,execute就不好用了……
源代码:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Resizable Map</title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.0/js/dojo/dijit/themes/tundra/tundra.css"/> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis?v=2.0"></script> <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"></script> <script> //地图div的宽高 var wid; var hei; var map; var graphicLayer; dojo.require("esri.map"); dojo.require("esri.toolbars.navigation"); dojo.require("esri.tasks.query"); function init(){ var initExtent = new esri.geometry.Extent({"xmin": 76252, "ymin": 295635, "xmax": 135783, "ymax": 305322, "spatialReference": { "wkid": 106000 } }); map = new esri.Map("map",{//加载地图 logo:false,//不显示logo extent: initExtent }); var myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://192.168.0.181/ArcGIS/rest/services/GISBaseMap/MapServer"); map.addLayer(myTiledMapServiceLayer); var myTiledMapServiceLayer1 = new esri.layers.ArcGISTiledMapServiceLayer("http://192.168.0.181/ArcGIS/rest/services/ModelPipe_BaseMap/MapServer"); map.addLayer(myTiledMapServiceLayer1); } window.onload=function(){ /*事件监听,div宽高变化*/ /*首先获取div当前宽高,然后每隔一秒钟获取一次div当前宽高,然后同上一次获取到的宽高进行比较,如果改变,则触发事件,重新加载地图*/ wid=$('#map').width(); hei=$('#map').height(); setInterval("changed()",100); } //监听地图宽高改变事件 function changed(){ var wid1=$('#map').width(); var hei1=$('#map').height(); if(wid1!=wid || hei1!=hei){ wid=wid1; hei=hei1; window.map.resize(); } } //添加点 function mapGraphicAdd(x,y){ if(graphicLayer!=null){ graphicLayer.clear(); } graphicLayer = new esri.layers.GraphicsLayer(); map.addLayer(graphicLayer); var point = new esri.geometry.Point(x,y); var infoTemplate = new esri.InfoTemplate("point","<div style='background-color:red;border:1px solid red'>this is the new point</div>"); var simpleMarkerSymbol = new esri.symbol.SimpleMarkerSymbol(); var graphic = new esri.Graphic(point,simpleMarkerSymbol); graphicLayer.add(graphic.setInfoTemplate(infoTemplate)); } //清除点 function mapClear(){ graphicLayer.clear(); } dojo.addOnLoad(init); //获取阀门详细信息 var fs; function getfamen(ii) { var cityQueryTask = new esri.tasks.QueryTask("http://192.168.0.181/ArcGIS/rest/services/ModelPipe_BaseMap/MapServer/3"); var cityQuery = new esri.tasks.Query(); cityQuery.outFields = ["*"]; cityQuery.returnGeometry = true; cityQuery.outSpatialReference = map.spatialReference; cityQuery.where = "ElementId =" + ii; cityQueryTask.execute(cityQuery, addCityFeatureSetToMap); } function addCityFeatureSetToMap(featureSet) { var symbol = new esri.symbol.SimpleMarkerSymbol(); symbol.setColor(new dojo.Color([0, 0, 255])); var infoTemplate = new esri.InfoTemplate("阀门信息", "${*}"); fs = featureSet; dojo.forEach(featureSet.features, function (feature) { graphicLayer.add(feature.setSymbol(symbol).setInfoTemplate(infoTemplate)); }); } </script></head><body><div id="map" style="width: 50%;height: 50%;border: 1px solid red"></div><div onclick="mapGraphicAdd(95353.359,304542.613)">添加</div><div onclick="getfamen('275139')">添加</div><div onclick="mapClear()">清除</div></body></html>这里,首先点击第一个添加,向地图上加入一个x:95353.359,y:304542.613的标记,然后点击第二个添加,从http://192.168.0.181/ArcGIS/rest/services/ModelPipe_BaseMap/MapServer/3 图层中获取第二个点ElementId=275139的坐标,添加到地图上。
问题是,如果我将代码中 extent: initExtent 这一行注释掉的话,点击第二个添加就不会有第二个点添加到地图上了。代码会运行到
cityQueryTask.execute(cityQuery, addCityFeatureSetToMap); 这一行。
设置extent 的目的是为了初始化地图在首次加载时候的位置,而 execute()是arcgis的图层要素查询的功能。这两个按道理来讲是没有太大联系的。难道是因为没有设置wkid,导致graphicLayer找不到点吗?
阅读全文
0 0
- arcgis api for javascrpit extent()与execute()
- arcgis api for javascrpit 与easyui相结合时遇到的一个问题
- arcgis api for javascrpit 基于dojo框架的query查询功能1
- arcgis api for javascrpit 基于dojo框架的query查询功能2
- arcgis api for javascrpit 基于dojo框架的query查询功能3
- arcgis for flex api version3.7 教程:9.地图范围extent的设置和使用
- Arcgis for javascript Extent方法总结
- 关于ArcGIS API for JavaScript与Dojo
- 关于ArcGIS API for JavaScript与Dojo
- 【ArcGIS API for Flex】GraphicLayer与Graphic
- 关于ArcGIS API for JavaScript与Dojo
- Arcgis API For Javascript下载与安装
- 关于ArcGIS API for JavaScript与Dojo
- Arcgis---the Vertical extent is too large for proper display
- arcgis api for silverlight
- ArcGIS API for JavaScript
- arcgis api for javascript 距离与面积量算
- arcgis api for javascript 距离与面积量算
- jdk1.7 nio实现文件拷贝
- vue.extend
- python使用技巧
- Linux Unit17--lvm
- GoldenGate 抽取进程的常用添加方法
- arcgis api for javascrpit extent()与execute()
- python高阶函数笔记
- 第八周(2) 数组和广义表 猴子选大王
- 变量的使用(五)
- iOS与H5交互 H5与App原生交互,一般会是前端页面中的JavaScript与App使用的原生开发语言的交互。技术方案应能达到以下要求: 在js与原生进行交互的时候能保证正常的正向调用逻辑返回
- 纪念碑谷2第二章(前庭)
- 有效使用Mock编写java单元测试
- ubuntu14.04+cuda8.0+cudnn5.1+caffe+anaconda完整安装指南
- python sqlite3模块使用(转)