问题描述:在地图中根据一个地名来检索该地名的经纬度信息
准备工作:相应的地图服务支持,包括地图数据的支持,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
转载自原文链接, 如需删除请联系管理员。
原文链接:根据地名检索该地名的经纬度等信息,转载请注明来源!