码迷,mamicode.com
首页 > 其他好文 > 详细

根据地名检索该地名的经纬度等信息

时间:2015-08-08 18:18:02      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:arcgis   地图   web   

问题描述:在地图中根据一个地名来检索该地名的经纬度信息

准备工作:相应的地图服务支持,包括地图数据的支持,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

版权声明:本文为博主原创文章,未经博主允许不得转载。

根据地名检索该地名的经纬度等信息

标签:arcgis   地图   web   

原文地址:http://blog.csdn.net/wangwuyilove/article/details/47360285

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!