http://blog.csdn.net/gisshixisheng/article/details/44621923

概述:

在前面的章节,讲到了Arcgis for js加载天地图,在本节讲述如何在Openlayers 2.X的版本中加载天地图,并添加自己的wms服务。

效果:

地图

影像

地形

去掉本地wms

实现:

1、天地图服务

在天地图的官方网站上,我们可以看到如下所示的:

页面上列出了我们可调用的图的url,网站地址为:http://www.tianditu.com/guide/index.html。

2、加载天地图

在openlayers中加载天地图可用OpenLayers.Layer.XYZ来实现,在此,我将之封装成了两个函数,getBaseLayer和getAnnoLayer,分别实现基础底图和标注图层,代码如下:

[javascript] view plaincopy print?
  1. function getBaseLayer(layername, layer){
  2. return new OpenLayers.Layer.XYZ(
  3. layername,
  4. [
  5. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  6. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  7. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  8. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  9. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  10. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  11. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  12. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"
  13. ],
  14. {
  15. isBaseLayer: true,
  16. displayInLayerSwitcher:true
  17. }
  18. );
  19. };
  20. function getAnnoLayer(layername, layer, visiable){
  21. return new OpenLayers.Layer.XYZ(
  22. layername,
  23. [
  24. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  25. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  26. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  27. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  28. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  29. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  30. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  31. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"
  32. ],
  33. {
  34. isBaseLayer: false,
  35. visibility:visiable,
  36. displayInLayerSwitcher:false
  37. }
  38. );
  39. };

调用方式为:

[javascript] view plaincopy print?
  1. var baseLayers = ["vec_c","img_c","ter_c"];
  2. var vecLayer = getBaseLayer("地图",baseLayers[0]);
  3. var imgLayer = getBaseLayer("影像",baseLayers[1]);
  4. var terLayer = getBaseLayer("地形",baseLayers[2]);
  5. var vecAnno = getAnnoLayer("地图标注", "cva_c", true);

完整代码如下:

[html] view plaincopy print?
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <title>OpenLayers MapQuest Demo</title>
  8. <link rel="stylesheet" type="text/css" href="http://200.200.200.222/OpenLayers-2.12/theme/default/style.css"/>
  9. <style type="text/css">
  10. html, body, #map{
  11. padding:0;
  12. margin:0;
  13. height:100%;
  14. width:100%;
  15. }
  16. </style>
  17. <script type="text/javascript" src="http://200.200.200.222/OpenLayers-2.12/OpenLayers.js"></script>
  18. <script type="text/javascript">
  19. var map;
  20. function init(){
  21. function getBaseLayer(layername, layer){
  22. return new OpenLayers.Layer.XYZ(
  23. layername,
  24. [
  25. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  26. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  27. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  28. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  29. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  30. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  31. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  32. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"
  33. ],
  34. {
  35. isBaseLayer: true,
  36. displayInLayerSwitcher:true
  37. }
  38. );
  39. };
  40. function getAnnoLayer(layername, layer, visiable){
  41. return new OpenLayers.Layer.XYZ(
  42. layername,
  43. [
  44. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  45. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  46. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  47. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  48. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  49. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  50. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
  51. "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"
  52. ],
  53. {
  54. isBaseLayer: false,
  55. visibility:visiable,
  56. displayInLayerSwitcher:false
  57. }
  58. );
  59. };
  60. var baseLayers = ["vec_c","img_c","ter_c"];
  61. var vecLayer = getBaseLayer("地图",baseLayers[0]);
  62. var imgLayer = getBaseLayer("影像",baseLayers[1]);
  63. var terLayer = getBaseLayer("地形",baseLayers[2]);
  64. var vecAnno = getAnnoLayer("地图标注", "cva_c", true);
  65. map = new OpenLayers.Map({
  66. div: "map",
  67. projection: "EPSG:4326",
  68. layers: [vecLayer,imgLayer,terLayer],
  69. numZoomLevels:20,
  70. center: [103.847, 36.0473],
  71. zoom: 4
  72. });
  73. map.addControl(new OpenLayers.Control.LayerSwitcher());
  74. map.addControl(new OpenLayers.Control.MousePosition());
  75. var wms = new OpenLayers.Layer.WMS(
  76. "省级行政区",
  77. "http://200.200.200.220:8080/geoserver/wms",
  78. {
  79. LAYERS: "pro",
  80. transparent:true
  81. },
  82. {
  83. singleTile: false,
  84. ratio: 1,
  85. isBaseLayer: false,
  86. visibility:true,
  87. yx : {'EPSG:4326' : true}
  88. }
  89. );
  90. map.addLayer(wms);
  91. map.addLayers([vecAnno]);
  92. }
  93. </script>
  94. </head>
  95. <body οnlοad="init()">
  96. <div id="map"></div>
  97. </body>

转载于:https://www.cnblogs.com/telwanggs/p/6972830.html

(转)Openlayers 2.X加载天地图相关推荐

  1. Vue+Openlayers实现加载天地图WMTS服务显示

    场景 Vue中使用Openlayers加载OSM(Open Street Map)显示街道地图: Vue中使用Openlayers加载OSM(Open Street Map)显示街道地图_BADAO_ ...

  2. OpenLayers 加载天地图模糊的问题 OpenLayers 地图缩放模糊

    openlayers 加载天地图模糊的问题,OpenLayers 地图缩放几次之后模糊 2021年12月20日 纠正模糊原因: 地图加载瓦片实质上还是图片,一般来说是256&256,将一个静态 ...

  3. GIS初学者,最新OpenLayers WMTS 天地图,OpenLayers加载天地图、调用天地图WMTS示例、tianditu、EPSG:3857、EPSG:4326

    2018最新OpenLayers天地图加载可行方案,天地图WMTS调用,OpenLayers 天地图 WMTS GetCapabilities GetTile 最近要了解Web GIS方面的知识,对我 ...

  4. openlayers学习——1、openlayers加载天地图

    openlayers加载天地图 前言:基于Vue,学习openlayers,根据官网demo,记录常用功能写法.本人不是专业GIS开发,只是记录,方便后续查找. 参考资料: openlayers官网: ...

  5. OpenLayers 加载天地图

    要使用 OpenLayers 3 加载天地图,首先要弄清楚天地图发布的原理,以及遵循的发布规范,上一篇中我们提到了使用 OpenLayers 3 加载百度地图,我们提到一般网络地图为了加快访问速度,都 ...

  6. openlayers加载天地图及天地图地形图影像图

    openlayer加载天地图.天地图地形图.天地图影像图,相关代码有注释. 加载效果: 天地图底图 天地图地形图 天地图影像图 相关代码: import {XYZ,TileImage} from 'o ...

  7. Openlayers 2.X加载高德地图

    概述: 前面的有篇文章介绍了Openlayers 2.X下加载天地图,本节介绍Openlayers 2.X下加载高德地图. 实现效果: 高德地图 高德影像 图中:蓝色的省市边界为我本机发布的,能够与高 ...

  8. ol xyz 加载天地图_OpenLayers加载天地图方法——WMTS和XYZ

    1.ol.layer.Tile及数据源类结构 openlayers中,图层(layer)不可缺少的组成部分是数据源(source),天地图是切片的数据服务,对应的图层是ol.layer.Tile,下图 ...

  9. (转)Openlayers 2.X加载高德地图

    http://blog.csdn.net/gisshixisheng/article/details/44853881 概述: 前面的有篇文章介绍了Openlayers 2.X下加载天地图,本节介绍O ...

最新文章

  1. pythonpil库过滤图像contour_快乐python 零基础也能P图 —— PIL库
  2. windows安装visual studio code并配置latex并编写latex论文
  3. Java 逆序存放4位数
  4. 新增达达设计的8个Skin
  5. Vue+Spring boot前后端响应流程总结
  6. linux fall delay 10,Cell的Rise delay和Fall delay、Rise transition和fall transition
  7. 这或才是产品人「年终奖」的真实情况!
  8. 如何把竖排的数据变为横排_读懂微信改版背后的焦虑,企业新媒体营销该如何自救?...
  9. atom 基础使用教程
  10. M.2接口 通道SATA,PCI-Ex2,PCI-Ex4,B key,M key,BM key,NVMe,AHCI都是什么
  11. 计算机十个小技巧,Win10的10个实用小技巧,电脑小白轻松掌握,大大提升工作效率...
  12. If you already have a 64-bit JDK installed。。。。
  13. web网页设计期末课程大作业:美食餐饮文化主题网站设计——中华美德6页面html css javascript
  14. 选择服务器托管时应该注意什么?
  15. 编程心得分享,送给刚入门学编程的小伙伴
  16. scrapy 报错401
  17. php 对上传图片尺寸裁切,PHP图片自动裁切应付不同尺寸的显示
  18. 【mongoDB】一一一一安装报错1058解决方案
  19. LeetCode第一阶段(一)【数组篇】
  20. socket.io不错的websocket

热门文章

  1. linux中的TC(TrafficControl)详细说明
  2. ElasticSearch核心基础之聚合
  3. GroupMetadataManager分析
  4. python哪个更强大_Ruby和Python哪个更强大?学习分析
  5. vue 复制 长按_Vue
  6. 使用NRF2401 STM32F303ZET6 NUCLEO 开发板
  7. 1013.clion配置快捷提示模板
  8. 《消息队列》函数讲解
  9. QT开发及实例学习之六控件
  10. php基础知识填空题,比较基础的php面试题及答案填空题