1.<maps_uri>/{mapName}[.<format>]
2.<maps_uri>/{mapIndex}[.<format>]
image、entireImage、overview、trackingLayer、layers、tempLayersSet、distance、area、chartFeatureInfoSpecs、queryResults、tileImage、tileFeature、tilesets、utfGrid、highlightImage、clearCache、symbol、prjCoordSys、zxyTileImage
map 资源是访问在线地图服务的入口,通过 map 资源,可以获得该地图的基本状态信息,如中心点,比例尺,地图范围,图片大小,地图单位,包含的图层,包含的图片等等,并可以创建一个临时的图层集。
对 map 资源执行 GET 请求时,可以获取 flash、flash3d、silverlight、javascript、supermapcloud、tianditu 表述,即针对该地图资源的 Flash 客户端应用、Flash3D 客户端、 Silverlight 客户端应用、JavaScript 客户端应用、SuperMapCloud 应用和 Tianditu 应用,这些应用实现了简单的地图功能。对 map 资源执行 GET 请求时,还可以获取 KML 表述,如 http://supermapiserver:8090/iserver/services/map-world/rest/maps/World%20Map.kml, 在 GoogleEarth 客户端可以直接打开此 kml URI 进行显示。
根据国家有关规定,SuperMap 云服务的数据及天地图的数据经过了脱密处理,因此 supermapcloud 表述形式下,地图浏览效果与云服务图层可能存在一定程度的偏差;tianditu 表述形式下,地图浏览效果与天地图图层可能存在一定程度的偏差。
关于本资源的使用方法,可参考开发指南:获取地图参数。
支持的方法:
支持的表述格式:RJSON、JSON、FASTJSON、JSONP、HTML、XML、KML、JavaScript、Leaflet、openlayers3 (with MVT)、MapboxGL、for Classic (with Vector Tile)、WebGL3D。
对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名,“世界地图” 是地图名({mapName})。
http://supermapiserver:8090/iserver/services/map-world/rest/maps/世界地图.rjson
获取地图当前状态的基本信息,包括该地图的中心点,比例尺,地图显示范围,出图图片大小,地图单位,距离度量单位等。其中,地图进行动态投影时,地图显示范围(viewBounds)是指原地图显示范围在目标投影下所转换成的多边形的外接矩形,而其他地图状态参数也会随之变化,如中心点和比例尺。
map 资源对应的 URI 有两种,优先以 mapName 匹配:
第一种:<maps_uri>/{mapName}[.<format>],地图资源由具体的地图名称{mapName}来标识,地图名称可以是中文;
第二种:<maps_uri>/{mapIndex}[.<format>],地图资源由具体地图的索引号{mapIndex}来标识,从0开始编号,依次为0、1、2、3等。
URI 中,在“?”后面支持传递的参数如下表所示:
名称 | 类型 | 含义 |
_cache | boolean | 【可选参数】
是否使用缓存,默认为 true。如果为 false,则关闭所有缓存。 |
prjCoordSys | 【可选参数】
用于指定请求地图的坐标参考系统,服务端会按照指定的坐标参考系统返回相应的地图状态信息。 如果此参数为空,则默认返回地图原坐标参考系统下的状态信息;如果指定的坐标参考系统与地图原坐标参考系统不同,服务端会对地图进行动态投影,然后返回动态投影后的地图状态信息。 参数使用时,需按照PrjCoordSys中的字段结构来构建,同时也支持通过只传递 epsgCode 的方式传入坐标参考系,如: prjCoordSys={"epsgCode":3857}。 |
|
queryResultID | String |
【可选参数】【JavaScript 表述中支持】
用于展示地图查询结果。 地图查询结果(queryResult)可以叠加在地图上,借助 map 资源的 JavaScript 表述进行显示,如:queryResultID=eiicoeik_889fa578956b4c90bb8aa841e5abfb7d。 |
flash、flash3d、silverlight、javascript 表述支持在 URI 中进行地图定位。以 flash 表述为例,利用 URI:http://supermapiserver:8090/iserver/services/map-world/rest/maps/World+Map.flash 获得名为 World Map 的地图的 flash 表述后,地图的比例尺和中心点坐标会自动以“比例尺/中心点 X/中心点 Y”的形式显示在 URI 的“#”后面,如:http://supermapiserver:8090/iserver/services/map-world/rest/maps/World+Map.flash#3.691951051719594e-8/10767652.46246/4260478.7946309,通过拖动、缩放地图等操作改变地图的 viewBounds,会实时更新 URI 中的比例尺和中心点坐标,用户也可以通过当前地图的 URI,快速解析到当前地图的比例尺和中心点坐标,实现对地图的定位。
SuperMap iServer 的 REST Map 服务支持发布各坐标参考系下的地图,且支持对 REST Map 服务中的地图进行动态投影(无投影的平面坐标系暂不支持)。
REST 地图服务动态投影的使用方法如下:
需要注意的是,地图进行动态投影后,其中坐标单位、中心点,比例尺,地图范围等状态信息与投影前会有不同,获取图片时,请注意设置相关参数。对 map 资源进行动态投影时,是以地图在目标投影下的 viewBounds 为范围来计算其他地图状态参数的,如中心点和比例尺,而新 viewBounds 是原 viewBounds 投影变换后对应多边形的外接矩形。此外,map 资源的当前坐标系状态会转递给子资源,如image、entireImage、tileImage,即这些子资源的默认坐标系与 map 资源的当前坐标系一致。
关于 SuperMap iServer 目前支持的 EPSG Code,请参考:iServer 支持的 EPSG Code。
对地图资源执行 GET 请求,返回的资源表述的结构如下(资源表述在响应消息的实体主体里):
字段 | 类型 | 说明 |
name | String | 当前地图的名称。 |
center | Point2D | 地图显示的中心点。 |
scale | double | 地图的显示比例尺,详见比例尺的定义。 |
maxScale | double | 地图的最大显示比例尺。该值为0时,表示没有比例尺显示限制。 |
minScale | double | 地图的最小显示比例尺。该值为0时,表示没有比例尺显示限制。 |
bounds | Rectangle2D | 地图的全幅地理范围。 |
viewBounds | Rectangle2D | 地图窗口显示区域的范围,是一个矩形框。
如果对地图设置了动态投影,则此参数表示原 viewBounds 在目标投影下所转换成的多边形的外接矩形。 |
viewer | Rectangle | 用户显示视窗,即产生的图片的大小。 |
prjCoordSys | PrjCoordSys | 返回当前地图的坐标参考系统。 |
dynamicPrjCoordSyses | PrjCoordSys | 返回当前地图所支持的目标投影坐标系列表。
如果当前坐标参考系统支持动态投影为所有类型的坐标参考系统,则 epsgCode 为0,type 为 PCS_ALL。 |
customParams | String | 自定义参数。
可以是任何形式组织的字符串。用户可以通过该属性传入自定义的参数。 |
userToken | UserInfo | 用户信息。 |
clipRegion | Geometry | 地图显示裁剪的区域。 |
clipRegionEnabled | boolean | 地图显示裁剪的区域是否有效。 |
customEntireBounds | Rectangle2D | 自定义的地图全幅显示范围。 |
customEntireBoundsEnabled | boolean | 自定义的地图全幅显示范围是否有效。 |
angle | double | 当前地图的旋转角度。 |
antialias | boolean | 是否反走样地图。 |
backgroundStyle | Style | 地图的背景风格。 |
colorMode | MapColorMode | 地图的颜色模式。 |
coordUnit | Unit | 地图的坐标单位。 |
distanceUnit | Unit | 地图的距离量度单位。 |
description | String | 当前地图的描述信息。 |
dynamicProjection | boolean | 是否允许地图动态投影显示。 |
markerAngleFixed | boolean | 指定点状符号的角度是否固定。 |
maxVisibleTextSize | double | 文本的最大可见尺寸,单位为像素。 |
maxVisibleVertex | int | 最大几何对象可见节点数。 如果几何对象的节点数超过指定的个数,则该几何对象不显示。 |
minVisibleTextSize | double | 文本的最小可见尺寸,单位为像素。 |
overlapDisplayed | boolean | 重叠时是否显示对象。 |
paintBackground | boolean | 是否绘制地图背景。 |
textAngleFixed | boolean | 文本角度是否固定。 |
textOrientationFixed | boolean | 文本朝向是否固定。 |
overlapDisplayedOptions | OverlapDisplayedOptions | 避免地图对象压盖显示的过滤选项,当 overlapDisplayed 为 false 时有效,用来增强对地图对象压盖时的处理。 |
visibleScales | double[] | 地图的可见比例尺数组。 |
dpi | double | 分辨率,单位为每英寸点数。 |
visibleScalesEnabled | boolean | 是否使用固定比例尺来显示地图。 |
customEntireBoundsEnabled | boolean | 自定义的地图全幅显示范围是否有效。 |
cacheEnabled | boolean | 是否启用缓存。 |
autoAvoidEffectEnabled | boolean | 是否启用自动避让效果。 |
对 World 地图资源:http://supermapiserver:8090/iserver/services/map-world/rest/maps/世界地图.rjson 执行 GET 请求,返回 rjson 格式的资源表述如下:
{
"angle": 0,
"antialias": true,
"backgroundStyle": {
"fillBackColor": {
"blue": 255,
"green": 255,
"red": 255
},
"fillBackOpaque": true,
"fillForeColor": {
"blue": 255,
"green": 255,
"red": 255
},
"fillGradientAngle": 0,
"fillGradientMode": "NONE",
"fillGradientOffsetRatioX": 0,
"fillGradientOffsetRatioY": 0,
"fillOpaqueRate": 100,
"fillSymbolID": 0,
"lineColor": {
"blue": 0,
"green": 0,
"red": 0
},
"lineSymbolID": 0,
"lineWidth": 0.1,
"markerAngle": 0,
"markerSize": 2.4,
"markerSymbolID": 0
},
"bounds": {
"bottom": -90,
"left": -180,
"leftBottom": {
"x": -180,
"y": -90
},
"right": 180,
"rightTop": {
"x": 180,
"y": 90
},
"top": 90
},
"cacheEnabled": true,
"center": {
"x": 96.1736997712,
"y": 27.5734580668
},
"clipRegion": {
"center": null,
"id": 0,
"parts": null,
"points": null,
"style": null,
"type": "REGION"
},
"clipRegionEnabled": false,
"colorMode": "DEFAULT",
"coordUnit": "DEGREE",
"customEntireBounds": null,
"customEntireBoundsEnabled": false,
"customParams": "",
"description": "",
"distanceUnit": "METER",
"dynamicPrjCoordSyses": [{
"coordSystem": null,
"coordUnit": null,
"distanceUnit": null,
"epsgCode": 0,
"name": null,
"projection": null,
"projectionParam": null,
"type": "PCS_ALL"
}],
"dynamicProjection": false,
"markerAngleFixed": false,
"maxScale": 1.000000000000032E12,
"maxVisibleTextSize": 1000,
"maxVisibleVertex": 3600000,
"minScale": 0,
"minVisibleTextSize": 0.3,
"name": "世界地图",
"overlapDisplayed": true,
"paintBackground": true,
"prjCoordSys": {
"coordSystem": {
"datum": {
"name": "D_WGS_1984",
"spheroid": {
"axis": 6378137,
"flatten": 0.0033528107,
"name": "WGS_1984",
"type": "SPHEROID_WGS_1984"
},
"type": "DATUM_WGS_1984"
},
"name": "GCS_WGS_1984",
"primeMeridian": {
"longitudeValue": 0,
"name": "Greenwich",
"type": "PRIMEMERIDIAN_GREENWICH"
},
"spatialRefType": "SPATIALREF_EARTH_LONGITUDE_LATITUDE",
"type": "GCS_WGS_1984",
"unit": "DEGREE"
},
"coordUnit": "DEGREE",
"distanceUnit": "METER",
"epsgCode": 4326,
"name": "Longitude / Latitude Coordinate System---GCS_WGS_1984",
"projection": null,
"projectionParam": null,
"type": "PCS_EARTH_LONGITUDE_LATITUDE"
},
"resourceParameter": null,
"scale": 2.563206512274041E-8,
"textAngleFixed": false,
"textOrientationFixed": false,
"userToken": {"userID": ""},
"viewBounds": {
"bottom": 15.704362017314319,
"left": 84.30460372171433,
"leftBottom": {
"x": 84.30460372171433,
"y": 15.704362017314319
},
"right": 108.04279582068568,
"rightTop": {
"x": 108.04279582068568,
"y": 39.442554116285685
},
"top": 39.442554116285685
},
"viewer": {
"bottom": 256,
"height": 256,
"left": 0,
"leftTop": {
"x": 0,
"y": 0
},
"right": 256,
"rightBottom": {
"x": 256,
"y": 256
},
"top": 0,
"width": 256
},
"visibleScales": [],
"visibleScalesEnabled": false
}
如果希望获取动态投影到 WebMercator 的地图,则需要设置 prjCoordSys={"epsgCode":3857},即对 World 地图资源:http://supermapiserver:8090/iserver/services/map-world/rest/maps/世界地图.rjson?prjCoordSys={"epsgCode":3857} 执行 GET 请求,返回 rjson 格式的资源表述如下:
{
"angle": 0,
"antialias": true,
"backgroundStyle": {
"fillBackColor": {
"blue": 255,
"green": 255,
"red": 255
},
"fillBackOpaque": true,
"fillForeColor": {
"blue": 255,
"green": 255,
"red": 255
},
"fillGradientAngle": 0,
"fillGradientMode": "NONE",
"fillGradientOffsetRatioX": 0,
"fillGradientOffsetRatioY": 0,
"fillOpaqueRate": 100,
"fillSymbolID": 0,
"lineColor": {
"blue": 0,
"green": 0,
"red": 0
},
"lineSymbolID": 0,
"lineWidth": 0.1,
"markerAngle": 0,
"markerSize": 2.4,
"markerSymbolID": 0
},
"bounds": {
"bottom": -2.5776731363158423E7,
"left": -2.0037508342789244E7,
"leftBottom": {
"x": -2.0037508342789244E7,
"y": -2.5776731363158423E7
},
"right": 2.0037508342789244E7,
"rightTop": {
"x": 2.0037508342789244E7,
"y": 2.57767313631584E7
},
"top": 2.57767313631584E7
},
"cacheEnabled": false,
"center": {
"x": 1.0706007286235156E7,
"y": 3258532.6200602674
},
"clipRegion": {
"center": null,
"id": 0,
"parts": null,
"points": null,
"style": null,
"type": "REGION"
},
"clipRegionEnabled": false,
"colorMode": "DEFAULT",
"coordUnit": "DEGREE",
"customEntireBounds": null,
"customEntireBoundsEnabled": false,
"customParams": "",
"description": "",
"distanceUnit": "METER",
"dynamicPrjCoordSyses": [{
"coordSystem": null,
"coordUnit": null,
"distanceUnit": null,
"epsgCode": 0,
"name": null,
"projection": null,
"projectionParam": null,
"type": "PCS_ALL"
}],
"dynamicProjection": true,
"markerAngleFixed": false,
"maxScale": 1.000000000000032E12,
"maxVisibleTextSize": 1000,
"maxVisibleVertex": 3600000,
"minScale": 0,
"minVisibleTextSize": 0.3,
"name": "世界地图",
"overlapDisplayed": true,
"paintBackground": true,
"prjCoordSys": {
"coordSystem": {
"datum": {
"name": "D_WGS_1984",
"spheroid": {
"axis": 6378137,
"flatten": 0.0033528107,
"name": "WGS_1984",
"type": "SPHEROID_WGS_1984"
},
"type": "DATUM_WGS_1984"
},
"name": "GCS_WGS_1984",
"primeMeridian": {
"longitudeValue": 0,
"name": "Greenwich",
"type": "PRIMEMERIDIAN_GREENWICH"
},
"spatialRefType": "SPATIALREF_EARTH_LONGITUDE_LATITUDE",
"type": "GCS_WGS_1984",
"unit": "DEGREE"
},
"coordUnit": "METER",
"distanceUnit": "METER",
"epsgCode": 3857,
"name": "User Define",
"projection": {
"name": "Mercator",
"type": "PRJ_MERCATOR"
},
"projectionParam": {
"azimuth": 0,
"centralMeridian": 0,
"centralParallel": 0,
"falseEasting": 0,
"falseNorthing": 0,
"firstPointLongitude": 0,
"firstStandardParallel": 0,
"scaleFactor": 0,
"secondPointLongitude": 0,
"secondStandardParallel": 0
},
"type": "PCS_USER_DEFINED"
},
"resourceParameter": null,
"scale": 2.257298309111974E-8,
"textAngleFixed": false,
"textOrientationFixed": false,
"userToken": {"userID": ""},
"viewBounds": {
"bottom": 1758952.3535372897,
"left": 9206427.019712178,
"leftBottom": {
"x": 9206427.019712178,
"y": 1758952.3535372897
},
"right": 1.2205587552758133E7,
"rightTop": {
"x": 1.2205587552758133E7,
"y": 4758112.886583245
},
"top": 4758112.886583245
},
"viewer": {
"bottom": 256,
"height": 256,
"left": 0,
"leftTop": {
"x": 0,
"y": 0
},
"right": 256,
"rightBottom": {
"x": 256,
"y": 256
},
"top": 0,
"width": 256
},
"visibleScales": [],
"visibleScalesEnabled": false
}
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断地图资源是否存在,或者客户端是否有权限访问地图资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断地图资源是否支持<format>格式的表述。