添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Openlayers JavaScript API简介
OpenLayers是一个用于开发WebGIS客户端的JavaScript包。用户可以用简单的图片地图作为背景图,与其他的图层在OpenLayers 中进行叠加,可以通过远程服务的方式,将以OGC 服务形式发布的地图数据加载到基于浏览器的OpenLayers 客户端中进行显示。可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作,甚至可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。

天地图·四川 OpenLayer JavaScript API 具有如下特点:
1、可以直接调用地图服务实现地图显示。
2、稳定、兼容性强、便捷。
3、地图预览与地图切换更流畅,视觉效果更优。
4、开发更简单。

  • 基础地图服务 在网页中显示地图,支持矢量、影像、透明注记等地图,支持多种服务叠加。
  • 图层管理 管理地图显示方式,主要是影像,矢量,注记,用户自定义标记和描绘等相关的图层显示与切换操作。
  • 地图标绘 支持用户自定义在地图中进行标绘,获取更直观、明了的地图信息。
  • 路径导航 提供包括时间最短(尽量走高速),路程最短等分析方式,可以任意设置途径点\障碍点等,进行最优路径分析。
  • 地图工具 提供清除、全图、测距、测面、打印、标绘、纠错、地图分享、鼠标右键等对地图直接进行操作的工具。
  • 地名搜索 提供包括地名模糊搜索、范围搜索、缓冲区搜索、属性分类搜索等地名搜索服务。
  • openlayers js 介绍
    OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers 支持的地图来源包括Google Maps、Yahoo、 Map、微软Virtual Earth 等,用户还可以用简单的图片地图作为背景图,与其他的图层在OpenLayers 中进行叠加,在这一方面OpenLayers提供了非常多的选择。
    OpenLayers 除了可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作,甚至可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。
    获取API
    地图API是由JavaScript语言编写的,您在使用之前需要通过<script>标签将API引用到页面中: <link rel="Stylesheet" type="text/css" href="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js" />
    此API为地图展示版本,主要完成地图的展示和操作功能,如地图定位、放大和缩小等!

    浏览器:IE 6.0+、Firefox 3.6+、Opera 9.0+、Safari 3.0+、Chrome
    操作系统:Windows、Mac、Linux
    hello world

    该示例创建一个地图区域

    var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var map = new OpenLayers.Map("map_container"); var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); map.addLayer(layer); 1.声明一个访问服务的令牌(token), 详细信息参见常见问题 。 // 把token字符串替换为你申请的token字符串。 var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; 2.声明一个切片服务地址 查看所有服务 var url = "http://www.scgis.net.cn/imap/iMapServer/DefaultRest/services/SCTileMap/"; 3.创建一个地图对象,设置其容器为map_container var map = new OpenLayers.Map("map_container"); 4.创建一个切片图层对象,把切片的服务地址和显示范围给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); 5.向地图容器中添加切片图层对象 map.addLayer(layer); <!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="textml; charset=utf-8" /> <style type="text/css"> html{height:auto;} body{height:auto;margin:0; padding:0;} #map_container{ width:800px;height:500px;} </style> <title>iMap 地图JavaScript API 2.4+ 示例:Hello World</title> <script type="text/javascript" src="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js"></script> <script type="text/javascript"> function init() { // 把token字符串替换为你申请的token字符串。 var token = "t0eYFNOSM-gP6rG3RfE6Kf52qNPg1UEySyzyK8ajM_q4ZoqQrGaO_0pkd36FsRzX"; // 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; // 创建一个地图对象,设置其容器为map_container var map = new OpenLayers.Map("map_container"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); </script> </head> <body onload="init()"> <div id="map_container"></div> </body> </html> OpenLayers.Layer.SCGISTileMapEx(layername:String,url:String,{options?:Object}) 创建一个切片图层的实例

    url:切片服务的URL地址

    options:可选参数列表

    toke:令牌

    layername:图层名称

    isBaseLayer:是否为基础图层

    zoomToExtent:缩放范围

    transitionEffect:缩放渐变

    errorCallback:加载失败回调函数

    visibility:可见性

    isZoomToInitialExtent:是否缩放到原始范围

    maxExtent:显示最大范围

    returnTipTile: 是否让服务器返回带提示信息的空图片

    displayOutsideMaxExtent:超出最大范围是否显示

    yx:坐标系设置

    OpenLayers.Layer.SCGISThemeMap(layername:String,url:String,{options?:Object}) 创建一个地名搜索结果图层的实例

    layername:图层名称

    url:地名搜索的URL地址

    options:可选参数列表

    toke:令牌

    isBaseLayer:是否基础图层

    maxResolution:显示最大分辨率

    transitionEffect:缩放渐变

    errorCallback:加载失败回调函数

    visibility:可见性

    format:返回图片格式

    identify(x:Float,y:Float,tolerancePixel:Intenger,callbackFunction:function(json)) 通过点查询当前图层要素信息

    x:x坐标

    y:y坐标

    tolerancePixel:容限像素个数

    callbackFunction:查询完毕回调函数

    getResolution() Resolution:float 获取图层分辨率 OpenLayers.Popup. SCGISFramed(id:String,lonlat:LonLat,contentSize:Size,contentHTML:String, anchor:String,closeBox:Object,closeBoxCallback:function()) 创建一个自定义信息框的实例

    id:信息框id

    lonlat:经纬度

    contentSize:尺寸

    contentHTML:信息框html内容

    closeBoxCallback:关闭按钮回调函数/p> var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var map = new OpenLayers.Map("map_container"); var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); map.addLayer(layer); 1.声明一个访问服务的令牌(token),详细信息参见 常见问题 。 // 把token字符串替换为你申请的token字符串。 var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; 2.声明一个切片服务地址 查看所有服务 var url = "http://www.scgis.net.cn/imap/iMapServer/DefaultRest/services/SCTileMap/"; 3.创建一个地图对象,设置其容器为map_container var map = new OpenLayers.Map("map_container"); 4.创建一个切片图层对象,把切片的服务地址和显示范围给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); 5.向地图容器中添加切片图层对象 map.addLayer(layer); <!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="textml; charset=utf-8" /&gt <style type="text/css"> html{height:auto;} body{height:auto;margin:0; padding:0;} #map_container{ width:800px;height:500px;} </style> <title>iMap 地图JavaScript API 2.4+ 示例:Hello World</title> <script type="text/javascript" src="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js"></script> <script type="text/javascript"> function init() { // 把token字符串替换为你申请的token字符串。 var token = "t0eYFNOSM-gP6rG3RfE6Kf52qNPg1UEySyzyK8ajM_q4ZoqQrGaO_0pkd36FsRzX"; // 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; // 创建一个地图对象,设置其容器为map_container var map = new OpenLayers.Map("map_container"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); </script> </head> <body onload="init()"> <div id="map_container"></div> </body> </html> var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var map = new OpenLayers.Map("map_container"); var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); map.addLayer(layer); 声明一个访问服务的令牌(token),详细信息参见 常见问题 。 // 把token字符串替换为你申请的token字符串。 var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z"; 创建一个地图对象实例,设置地图容器为mapShow面板,初始并加载瓦片图层。 //查询地址 var nameSearchUrl="http://www.scgis.net.cn:5506/iMap/iMapServer/DefaultRest/services/newtianditunamesearch/"; //定义地名搜索结果图层 //定义查询参数 var _content = { keyname: "医院", //要查询关键字 startIndex: "0", //返回的数据的开始的索引值 stopIndex: "12", //返回的数据的结束的索引值 DiQuKey: "5101", //市级的行政区代码(5101为成都市) QuXianKey: "510107", //县级的行政区划代码(510107为武侯区) typeCode: "yl", //要查询的类型(yl为医院) url: nameSearchUrl, //查询服务的地址 token: token, //向服务器发出查询请求的令牌 //回调函数 callback: namesearchCallback //声明查询脚本,创建查询请求 var jsonp = new OpenLayers.Protocol.Script(); jsonp.createRequest(nameSearchUrl+"Search?",_content,namesearchCallback); function namesearchCallback(json, context) { var data = json.message.features; //地图显示点的样式声明 //地名点 var geometrypt; //地名要素 var namefeat; //遍历返回的12个数据,在地图上进行显示 for (i = 0; i < data.length; i++) { var stylenamesearch = { externalGraphic: "img/marker.png", graphicWidth: 20, graphicHeight: 20, graphicTitle: data[i].attributes[3] var infoStr = data[i].attributes[3]; //要素点坐标 geometrypt = new OpenLayers.Geometry.Point(data[i].attributes[1], data[i].attributes[2]); namefeat = new OpenLayers.Feature.Vector(geometrypt, data[i].attributes, stylenamesearch); //加载要素 nameSearchVector.addFeatures(namefeat); 创建地名搜索对象实例,使用对象实例的execute方法,构建查询参数,并在回调函数中将返回的数据录入气泡框,并将信息点的位置在地图上进行显示。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="textml; charset=utf-8" /> <title>天地图四川帮助页面</title> <script src="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js"></script> <script type="text/javascript"> var nameSearchVector = new OpenLayers.Layer.Vector(); function init() { // 把token字符串替换为你申请的token字符串。 var token = "t0eYFNOSM-gP6rG3RfE6Kf52qNPg1UEySyzyK8ajM_q4ZoqQrGaO_0pkd36FsRzX"; // 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; // 创建一个地图对象,设置其容器为map_container var map = new OpenLayers.Map("mapShow"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(nameSearchVector); //查询地址 var nameSearchUrl="http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditunamesearch/"; //定义地名搜索结果图层 //定义查询参数 var _content = { keyname: "医院", //要查询关键字 startIndex: "0", //返回的数据的开始的索引值 stopIndex: "12", //返回的数据的结束的索引值 DiQuKey: "5101", //市级的行政区代码(5101为成都市) QuXianKey: "510107", //县级的行政区划代码(510107为武侯区) typeCode: "yl", //要查询的类型(yl为医院) url: nameSearchUrl, //查询服务的地址 token: token, //向服务器发出查询请求的令牌 //回调函数 callback: namesearchCallback //声明查询脚本,创建查询请求 var jsonp = new OpenLayers.Protocol.Script(); jsonp.createRequest(nameSearchUrl+"Search?",_content,namesearchCallback); function namesearchCallback(json, context) { var data = json.message.features; //地图显示点的样式声明 //地名点 var geometrypt; //地名要素 var namefeat; //遍历返回的12个数据,在地图上进行显示 for (i = 0; i < data.length; i++) { var stylenamesearch = { externalGraphic: "img/marker.png", graphicWidth: 20, graphicHeight: 20, graphicTitle: data[i].attributes[3] var infoStr = data[i].attributes[3]; //要素点坐标 geometrypt = new OpenLayers.Geometry.Point(data[i].attributes[1], data[i].attributes[2]); namefeat = new OpenLayers.Feature.Vector(geometrypt, data[i].attributes, stylenamesearch); //加载要素 nameSearchVector.addFeatures(namefeat); </script> </head> <body onload="init()"> <div id="mapShow" class="soria" style="width:800px;height:400px;"></div> </body> </html> var map = new OpenLayers.Map("mapShow"); // 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; extent=[104.0624 - 0.1, 30.6615 - 0.1, 104.0624 + 0.1, 30.6615 + 0.1]; //成都 // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(shortpathLayer); 声明一个访问服务的令牌(token),详细信息参见 常见问题 。 // 把token字符串替换为你申请的token字符串。 var token = "-pxvYt1zsn3NWaFKnNvWvz8XULYQ3EkCCUawdi0vv3FyHI49bieLddJgEHz6bcaR"; 创建一个地图对象实例,设置地图容器为mapShow面板,初始并加载瓦片图层。 //起点和终点坐标 var startX=104.0703; var startY=30.7128; var stopX=104.1318; var stopY=30.6838; //创建图层显示范围 var extent=[104.0624 - 0.1, 30.6615 - 0.1, 104.0624 + 0.1, 30.6615 + 0.1]; //成都 // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(shortpathLayer); //路径分析参数 var _content = { startX: startX, startY: startY, //起点XY stopX: stopX, stopY: stopY, //终点XY powerColumnName: "length", //路径分析选项(length为路径最短、power时间最短) returnDirection: false, //是否输出方向文本描述信息。 VIAPoints: "", //途经点json BarriesLocation: "", //障碍点json token: token, //令牌 ST: parseInt(Math.random() * 100000) //随机数,以免提交请求的时候路径相同就用客户端缓存。 var jsonp = new OpenLayers.Protocol.Script(); jsonp.createRequest(shortPathUrl + "/shortPath", _content, function (json, context) { //回调函数 if(json.success) var temp = json.message; var imapjson_format = new OpenLayers.Format.SCGISJSON(); //以返回值构建的一条路径(几何对象,就是一条线) var geom = imapjson_format.read(temp.route, "Polyline"); //定义线段样式 var style_path={ strokeColor: "#0000FF", strokeWidth: 4, strokeOpacity: 0.5, strokeDashstyle: "solid" //地图图形层加入路径对象得到显示 var graphic_path = new OpenLayers.Feature.Vector(geom, null, style_path); //地图图形对象 shortpathLayer.addFeatures(graphic_path); alert(json.message.error); 创建路径分析对象实例,使用对象实例的execute方法,构建分析参数,并在回调函数中将返回的数据录入气泡框,并将信息点的位置在地图上进行显示。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="textml; charset=utf-8" /> <title>天地图四川帮助页面</title> <script src="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js"></script> <script type="text/javascript"> var shortpathLayer = new OpenLayers.Layer.Vector(); function init() { //定义地图 var map = new OpenLayers.Map("mapShow"); // 把token字符串替换为你申请的token字符串。 var token = "t0eYFNOSM-gP6rG3RfE6Kf52qNPg1UEySyzyK8ajM_q4ZoqQrGaO_0pkd36FsRzX"; // 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var shortPathUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/scShortpath/"; //路径分析服务地址 //起点和终点坐标 var startX=104.0703; var startY=30.7128; var stopX=104.1318; var stopY=30.6838; //地图初始函数 //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; extent=[104.0624 - 0.1, 30.6615 - 0.1, 104.0624 + 0.1, 30.6615 + 0.1]; //成都 // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(shortpathLayer); //路径分析参数 var _content = { startX: startX, startY: startY, //起点XY stopX: stopX, stopY: stopY, //终点XY powerColumnName: "length", //路径分析选项(length为路径最短、power时间最短) returnDirection: false, //是否输出方向文本描述信息。 VIAPoints: "", //途经点json BarriesLocation: "", //障碍点json token: token, //令牌 ST: parseInt(Math.random() * 100000) //随机数,以免提交请求的时候路径相同就用客户端缓存。 var jsonp = new OpenLayers.Protocol.Script(); jsonp.createRequest(shortPathUrl + "/shortPath", _content, function (json, context) { //回调函数 if(json.success) var temp = json.message; var imapjson_format = new OpenLayers.Format.SCGISJSON(); //以返回值构建的一条路径(几何对象,就是一条线) var geom = imapjson_format.read(temp.route, "Polyline"); //定义线段样式 var style_path={ strokeColor: "#0000FF", strokeWidth: 4, strokeOpacity: 0.5, strokeDashstyle: "solid" //地图图形层加入路径对象得到显示 var graphic_path = new OpenLayers.Feature.Vector(geom, null, style_path); //地图图形对象 shortpathLayer.addFeatures(graphic_path); alert(json.message.error); </script> </head> <body onload="init()"> <div id="mapShow" class="soria" style="width:800px;height:400px;"></div> </body> </html> var map; var tilemapurl = "http://www.scgis.net.cn/imap/iMapServer/DefaultRest/services/SCTileMap/mapserver"; var datasearchurl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/SClocation/"; // 把token字符串替换为你申请的token字符串。 var token = "KcZLcw1phSk7n9XICcZcBnhDwtHx35zeE1BsOI-a9tF5VW6HZfYGTx_UfWYa-N3z";// 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var datasearchLayer = new OpenLayers.Layer.Vector(); //地图初始函数 function init() { // 创建一个地图对象,设置其容器为map_container map = new OpenLayers.Map("im_mapShow"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(datasearchLayer); search(); function search() { //创建一个面对象 var polygonJson = { "rings": [[[103.045, 31.362], [103.023, 29.998], [104.535, 30.388], [104.365, 31.169],[103.045, 31.362]]]}; //构建一个查询条件对象, var content={ token: token, //Token字符串 layerID: 0, //请求图层 geometry: polygonJson, //空间对象 spatialRel: "spatialRelIntersects", //空间关系 whereClause: "OBJECTID<50" //条件语句 $.ajax({ type: "get", async: false, data:content, url: datasearchurl+"searchData?", //请求地址 dataType: "jsonp", jsonp: "callback", success: callback, error: function(ex) { alert("查询错误:" + ex.description); 声明一个访问服务的令牌(token),详细信息参见 常见问题 。 // 把token字符串替换为你申请的token字符串。 var token = "-pxvYt1zsn3NWaFKnNvWv5-mzjHQHxI-Wx8RtNhi_we1AmbRU2aD5_hwqJ-PWIra"; 创建一个地图对象实例,设置地图容器为mapShow面板,初始并加载瓦片图层。 // 创建一个地图对象,设置其容器为map_container map = new OpenLayers.Map("im_mapShow"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(datasearchLayer); 够建要素查询条件,创建查询对象执行查询。 //创建一个面对象 var polygonJson = { "rings": [[[103.045, 31.362], [103.023, 29.998], [104.535, 30.388], [104.365, 31.169],[103.045, 31.362]]], "spatialReference": { " wkid": 4326 } //构建一个查询条件对象, var content={ token: token, //Token字符串 layerID: 0, //请求图层 geometry: polygonJson, //空间对象 spatialRel: "spatialRelIntersects", //空间关系 whereClause: "OBJECTID<50" //条件语句 $.ajax({ type: "get", async: false, data:content, url: datasearchurl+"searchData?", //请求地址 dataType: "jsonp", jsonp: "callback", success: callback, //回调函数 error: function(ex) { alert("查询错误:" + ex.description); 将查询结果显示在地图上,并将其属性信息加入该图形的标题中。 //遍历每个要素 for (var i = 0; i < feas.length; i++) { var fea = feas[i]; //收集要素的字段名称及字段值 var infoStr = ""; for (var j = 0; j < cols.length; j++) { infoStr += cols[j].caption + ": " + fea.attributes[j] + "
    "; //对查询结果要素进行添加 //对象添加至图层 if (fea.geometryType == "Point") { //地图显示点要素的样式 var style_Point={ externalGraphic: "img/marker.png", graphicWidth: 20, graphicHeight: 20, graphicTitle: infoStr, graphicYOffset: -20 feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(fea.geometry.x, fea.geometry.y)); feature.style=style_Point; datasearchLayer.addFeatures(feature); <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="textml; charset=utf-8" /> <title>天地图四川帮助页面</title> <script src="http://www.scgis.net/SCGCMap/OpenLayers-scgisExtension-2.12.03.js"></script> <script type="text/javascript"> var map; var tilemapurl = "http://www.scgis.net.cn/imap/iMapServer/DefaultRest/services/SCTileMap/"; var datasearchurl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/SClocation/"; // 把token字符串替换为你申请的token字符串。 var token = "t0eYFNOSM-gP6rG3RfE6Kf52qNPg1UEySyzyK8ajM_q4ZoqQrGaO_0pkd36FsRzX";// 切片服务地址 var tilemapUrl = "http://www.scgis.net.cn/iMap/iMapServer/DefaultRest/services/newtianditudlg/"; var datasearchLayer = new OpenLayers.Layer.Vector(); //地图初始函数 function init() { // 创建一个地图对象,设置其容器为map_container map = new OpenLayers.Map("mapShow"); //创建图层显示范围 var extent=[95.50484501954,28.198615625002, 110.65328251954, 32.284064843752]; // 创建一个切片图层对象,把切片的服务地址给它 var layer = new OpenLayers.Layer.SCGISTileMapEx("dlgMapLayer", tilemapUrl,{token:token,zoomToExtent:extent}); // 向地图容器中添加一个切片图层对象 map.addLayer(layer); map.addLayer(datasearchLayer); search(); function search() { //创建一个面对象 var polygonJson = { "rings": [[[103.045, 31.362], [103.023, 29.998], [104.535, 30.388], [104.365, 31.169],[103.045, 31.362]]]}; //构建一个查询条件对象, var content={ token: token, //Token字符串 layerID: 0, //请求图层 geometry: polygonJson, //空间对象 spatialRel: "spatialRelIntersects", //空间关系 whereClause: "OBJECTID<50" //条件语句 $.ajax({ type: "get", async: false, data:content, url: datasearchurl+"searchData?", //请求地址 dataType: "jsonp", jsonp: "callback", success: callback, error: function(ex) { alert("查询错误:" + ex.description); function callback(json, context) { if (json.success) { addToMap(json.message); } else { alert("查询错误:" + json.description); function addToMap(returnData) { var cols = returnData.columns; var feas = returnData.features; //遍历每个要素 for (var i = 0; i < feas.length; i++) { var fea = feas[i]; var feature; //收集要素的字段名称及字段值 var infoStr = ""; for (var j = 0; j < cols.length; j++) { infoStr += cols[j].caption + ":" + fea.attributes[j] + ", "; //对象添加至图层 if (fea.geometryType == "Point") { //地图显示点要素的样式 var style_Point={ externalGraphic: "img/marker.png", graphicWidth: 20, graphicHeight: 20, graphicTitle: infoStr, graphicYOffset: -20 feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(fea.geometry.x, fea.geometry.y)); feature.style=style_Point; datasearchLayer.addFeatures(feature); </script> </head> <body onload="init()"> <div id="mapShow" class="soria" style="width:800px;height:400px;"></div> </body> </html>