获取地图列表 |
maps 资源是 SuperMap iServer 服务器上包含所有地图资源的集合,通过对它执行 GET 请求能够得到 SuperMap iServer 服务器提供的地图信息。
对maps 资源: http://localhost:8090/iserver/services/map-china400/rest/maps.json 执行 GET 请求,其中,localhost 是服务器名(这里是本机启动的服务),后缀 .json 设置返回的表述为 JSON 格式,构建 getMapsList()方法代码如下:
function getMapsList()
{
//获取 XMLHttpRequest 对象
var commit=getcommit();
//HTTP 请求的方法类型,这里是 GET
var method="GET";
//请求的地址
var url="http://localhost:8090/iserver/services/map-china400/rest/maps.json";
//设置是否为异步通信
var async=false;
//用户名和密码,当服务器需要验证时指定
var user="";
var password="";
//消息体(Entity Body)内容
var entry=null;
//建立 HTTP 连接,对 url 进行编码以保证 URI 的正确性。
commit.open(method,encodeURI(url),async,user,password);
//设置消息头(Message Headers)
commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//发送 HTTP 请求
commit.send(entry);
//commit.responseText 就是接收的服务器响应
}
对服务器端返回的内容进行处理,就需要了解服务器端返回的 JSON 字符串的结构,可参考 REST API 帮助中的maps 资源页面。
由 maps 资源的响应结构可知,我们可以获取地图集合中元素的 name 和 path 字段,在 getMapsList()方法中添加代码如下:
//解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
var response = json_parse(commit.responseText, null);
//获取用作显示的 Div 容器。
var container = document.getElementById('container');
//获取地图的个数
var len=response.length;
container.innerHTML="";
for(var i=0;i<len;i++)
{
container.innerHTML += '<li>地图名:' + response[i].name + ',访问路径:' + response[i].path + '</li>';
}
结果如下: