获取地图参数

发送反馈


获取地图列表一节内容可知,服务器上存在 China 地图资源,China 地图资源的 URI 是 http://localhost:8090/iserver/services/map-china400/rest/maps/China.json,通过 REST API,可以对 China 地图进行一系列的操作。

1. 获取 China 地图的名称、显示范围、用户视窗范围和比例尺。

通过 SuperMap iServer 11i(2023) Help 中 REST API 下的 map 资源页面 GET 请求的说明,可以看到服务器返回的 China 地图表述的结构,其中就包含地图名称、显示范围、用户视窗范围和比例尺等信息。

需要注意的是,其中 viewBounds 类型为 Rectangle2D,和 viewer 的类型为 Rectangle。关于两种类型的详细结构,请参见 iServer Javadoc 中的 com.supermap.services.components.commontypes,两种类型的结构与 commontypes 中的对应类(Rectangle2DRectangle)的属性相对应。

对 http://localhost:8090/iserver/services/map-china400/rest/maps/China.json 执行 GET 请求,对 JSON 字符串进行解析处理,得到结果,代码如下:

//获取 China400 地图的名称、显示范围、用户视窗范围和比例尺

function GetMap()

{

    var commit=getcommit();

    var uri="http://localhost:8090/iserver/services/map-china400/rest/maps/China.json";

    commit.open("GET",encodeURI(uri),false,"","");

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    commit.send(null);

    

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    //输出结果

    container.innerHTML="";

    container.innerHTML += '<p>地图名:' + response.name +'</p>';

    container.innerHTML += '<p>地图显示区域:<li>leftBottom:' + toJSON(response.bounds.leftBottom) +'</li>'+'<li>rightTop:'+toJSON(response.bounds.rightTop)+'</p>';

    container.innerHTML += '<p>用户视窗范围:<li>leftTop:' + toJSON(response.viewer.leftTop) +'</li>'+'<li>rightBottom:'+toJSON(response.viewer.rightBottom)+'</p>';

    container.innerHTML += '<p>地图比例尺:1:' + Math.round(1/response.scale) +'</p>';

}

结果如下:

注意:地图显示区域的坐标单位跟 China 地图一致,这里为米;而用户视窗范围的值单位为像素。