使用openlayers 3 在线加载天地图及GeoServer发布的地图

使用openlayers3来加载天地图卫星图和标注图层,GeoServer发布地图,一并用openlayers测试加载出来,顺便实现了7种地图控件。下面直接贴代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>OpenLayers MapQuest Demo</title>
    <link rel="stylesheet" type="text/css" href="css/ol.css"/>
    <style type="text/css">
        html, body, #map{
            padding:0;
            margin:0;
            height:100%;
            width:100%;
        }
        .mouse-position-wrapper{
            width:300px;
            height:29px;
            color:#FF00FF;
            position:absolute;
            right:20px;
            bottom:6px;
            z-index:999;
          }
          .ol-rotate{
            right:40px;
          }
          .ol-scale-line {
            left:180px;
          }
          .ol-zoomslider{
            top:120px;
            left: 9px;
          }
    </style>
    <script type="text/javascript" src="build/ol.js"></script>
    <script type="text/javascript">
        var map;
        function init(){
            //封装底图函数
            function getBaseLayer(layername, layer){
                return new ol.layer.Tile({
                     title:layername,
                     source:new ol.source.XYZ({
                         url:"http://t4.tianditu.com/DataServer?T="+layer+"&x={x}&y={y}&l={z}"
                     })
                });
            };  

            //封装标注图层
            function getAnnoLayer(layername, layer, visiable){
                return new ol.layer.Tile({
                     title:layername,
                     source:new ol.source.XYZ({
                      url:"http://t4.tianditu.com/DataServer?T="+layer+"&x={x}&y={y}&l={z}"
                     })
                });
            };  

            //天地图图层
            var baseLayers = ["vec_w","img_w","ter_w"];
            var vecLayer = getBaseLayer("地图",baseLayers[0]);
            var imgLayer = getBaseLayer("影像",baseLayers[1]);
            var terLayer = getBaseLayer("地形",baseLayers[2]);
            var vecAnno = getAnnoLayer("地图标注", "cva_w", true); 

            //使用GeoServer发布的地图
            function getWMSLayer(){
                return new ol.layer.Image({
                    source:new ol.source.ImageWMS({
                        url:‘http://localhost:8080/geoserver/wms‘,
                        params: {‘LAYERS‘: ‘topp:testpoly_landmarks‘,‘VERSION‘:‘1.1.1‘},
                        serverType: ‘geoserver‘
                    })

                })
            }

            //GeoServer中图层范围BBOX范围值
              var extent=[-74.047,40.68,-73.908,40.882];  

              //地图投影类型
              var projection=new ol.proj.Projection({
                  code:‘EPSG:4326‘,
                 units:‘degrees‘,
                  extent:extent
              });  

            var geoServerTest=getWMSLayer();

            map = new ol.Map({
                controls:ol.control.defaults().extend([
                    new ol.control.FullScreen(),
                    new ol.control.MousePosition({
                        coordinateFormat: ol.coordinate.createStringXY(4),
                        projection: ‘EPSG:4326‘,
                        className: ‘custom-mouse-position‘,
                        target: document.getElementById(‘mouse-position‘)
                    }) ,
                    new ol.control.OverviewMap({  }),
                    new ol.control.Rotate({
                        autoHide:false
                    }),
                    new ol.control.ScaleLine({  }),
                    new ol.control.ZoomSlider({  }),
                    new ol.control.ZoomToExtent({  })
                ]),
                view:new ol.View({
                    projection:projection,
                    center: ol.extent.getCenter(extent),
                    minZoom:1,
                    maxZoom:5,
                    zoom:1
                }),
                target: ‘map‘,
                layers: [geoServerTest],
            });  

        }
    </script>
</head>
<body onload="init()">
    <div id="map"></div>
    <div  id="mouse-position" class="mouse-position-wrapper">
    <div class="custom-mouse-position"></div>
</div>
</body>  

原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/9149404.html

时间: 2024-10-10 13:28:57

使用openlayers 3 在线加载天地图及GeoServer发布的地图的相关文章

OpenLayers 3 之 加载天地图

要使用 OpenLayers 3 加载天地图,首先要弄清楚天地图发布的原理,以及遵循的发布规范,上一篇中我们提到了使用 OpenLayers 3 加载百度地图,我们提到一般网络地图为了加快访问速度,都采用缓存切片地图的方式,天地图也不例外,而且原理极其类似,但是其切片的索引组织方式还是有一些不同,虽然都是切片,但是切片的起始坐标原点不一致,百度地图是屏幕的左下角,而天地图是屏幕的左上角(与谷歌地图一致),且所在的坐标系是球形墨卡托投影坐标系(EPSG:3857). 针对这种形式发布的地图切片,O

在Arccatalog中加载并查看已经发布的地图服务

发布地图服务,更新规划数据之后,需要查看相应的规划数据服务是否出现空白,没有被全覆盖,服务速度等等浏览查看数据更新之后的地图服务. 一般需要直接访问ArcGIS当中的ArcGIS server 10.x下面的Services Directory直接访问已经发布的地图服务,但这只是地图服务地址,我们需要查看浏览地图,所以,需要打开Arccatalog,点击GIS servers,add ArcGIS server,选择第三项,administer server,点击下一步,在server URL中

【ArcGis for javascript从零开始】之一 ArcGis加载天地图

最近做项目需要用到ArcGis来进行数据展示和数据分析.以前从来没有接触过与Gis有关的东西,一切需要从头开始学.没有时间从头系统地学习了,只能用到哪个学习哪里了,本系列只是对学习的路径进行记录.ArcGis在网上没有找到中文的API,只有官网的英文API和Demo,而且用到了大量dojo的API,dojo也没有接触过,这方面也是需要学习的…… 一.ArcGis加载 引入css 和js [html] view plain copy <link rel= "stylesheet" 

Openlayers 2.X加载高德地图

概述: 前面的有篇文章介绍了Openlayers 2.X下加载天地图,本节介绍Openlayers 2.X下加载高德地图. 实现效果: 高德地图 高德影像 图中:蓝色的省市边界为我本机发布的,能够与高德地图很好地结合在一起. 实现: 实现很简单的,主要是要获取地图的url,在Arcgis for js加载百度地图一文(http://blog.csdn.net/gisshixisheng/article/details/44853709)中做了介绍,在此不再赘述,实现代码如下: <!DOCTYPE

18 ArcGIS API for JavaScript4.X 系列加载天地图(经纬度)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

OpenLayers访问Geoserver发布的地图

上一篇文章基于Geoserver发布了一个18个图层的地图,本文介绍如何利用OpenLayers访问Geoserver发布的地图. 要访问Geoserver发布的地图,主要困难点是地图URL地址的确定,方法是打开Geoserver,在LayerPreview中找到要访问的地图,单击该地图后面的OpenLayers,如下图所示 这时客户端会调用OpenLayers访问该地图,如下图所示 这里我们主要注意的是浏览器中的地址: http://192.168.1.50:8080/geoserver/ka

arcgis api for javascipt 加载天地图、百度地图

写在前面的话: 1.百度地图是自己定义的坐标系统,wkid=102100.百度地图数据是加密的产物.下文将附上百度坐标与WGS84,谷歌等坐标系统转换方法(地理-地理),此方法并未亲测,据说准 2.百度地图可以直接加载经纬度坐标 3.百度地图如果加载的arcgis api中会出现坐标偏移,1.中已经解决了地理坐标转换,那么找到百度投影-地理坐标的转换方式,则arcgis就可以直接无偏加载了,网上很多方法,但是亲测不行. 4.天地图不是涉密数据,根据本文提供的类库,arcgis api for j

Arcgis怎么区分加载的是矢量还是切片地图?哪位大神有切片地图网址给我一个,谢谢。。。

============问题描述============ RT,我现在用的好像是矢量地图,加载后移动屏幕范围,之前加载好的也会重新被加载,十分慢,用户体验十分不好.是不是换成切片地图就好了.我可以再客户端将矢量地图变成切片地图么?还是只能接受切片地图资源才行... ============解决方案1============ 你看看加载的时候是不是一小个方格一小个方格加载的~是的话就是切片吧~ ============解决方案2============ 切片也慢,离线最好...不过切片本地缓存的话

(转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示

http://blog.csdn.net/gisshixisheng/article/details/41575833 标题比较长,主要呢是实现以下几点: 1.将shp数据导入到PostGIS中: 2.Geoserver发布WMS服务: 3.Openlayers调用Wms服务 首先,下载安装软件. 为方便大家下载,我将所有软件上传的百度网盘里了,有需要的可以上网盘直接下载,地址为:http://pan.baidu.com/s/1ntJrf8P,此外,openlayers的下载地址为:http:/