首页 » 技术分享 » 根据地名检索该地名的经纬度等信息

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

 

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

准备工作:相应的地图服务支持,包括地图数据的支持,arcgis的api包

代码展示:

//需要引入arcgis的api

require([
         "esri/tasks/FindTask",
	 "esri/tasks/FindParameters",
	 "esri/tasks/QueryTask",
	 "esri/tasks/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

转载自原文链接, 如需删除请联系管理员。

原文链接:根据地名检索该地名的经纬度等信息,转载请注明来源!

0