问题描述:在地图中根据一个地名来检索该地名的经纬度信息
准备工作:相应的地图服务支持,包括地图数据的支持,arcgis的api包
代码展示:
//需要引入arcgis的api require([ "esri.task.FindTask", "esri.task.FindParameters", "esri.task.QueryTask", "esri.task.Query" ],function(FindTask,FindParameters,QueryTask,Query){ //第一中通过FindTask,它支持多个图层的查询 var f = new FindTask("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer");//arcgis的地图服务,这里只是一个实例 var params = new FindParameters(); params.layerIds = [0,1,2,3]; //图层的序号 params.searchFields = ["NAME"];//要查询的字段,可以是多个 params.searchText = "北京"; //要查询的内容,这个是一个模糊匹配,会把这个地图服务上所以以“北京”开头的地方都找出来 params.returnGeometry = true; //是否返回geometry属性值,注意本次要的经纬度就从在这个属性中 f.execute(params,showResults); //showResults 是回掉函数,查询返回的值就在这个回掉函数中 function showResults(results){ console.dir(results); //这个就是查询的结果集,打印出来看看下就清楚了 for(var i=0;i<results.length;i++){ var graphic = results[i]; //一个点的信息 var xy = graphic.feature.geometry; var x = xy.x; //经度 var y = xy.y; //纬度 } } //第二种 QueryTask 这个只能检索一个图层的 var qt = new QueryTask("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer/1"); var q = new Query(); q.returnGeometry = true; q.outFields = ['*']; //返回字段,可以是多个,*表示全部 q.where = "NAME like '%北京%'" //可以是标准的sql qt.execute(q,res); //res是回掉函数 function res(resutls){ //results 就是返回结果集 for(var i=0;i<results.features.length;i++){ var graphic = results.features[i]; console.dir(graphic); var xy = graphic.geometry; var x = xy.x; //经度 var y = xy.y; //纬度 } } });
有问题可以查询arcgis的官方api:https://developers.arcgis.com/javascript/jsapi/
也可以留言交流学习,本人也是刚接触到arcgis
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-23 01:28:57