`
fiftyk
  • 浏览: 23060 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

OpenLayers加载Google地图

阅读更多

原先发在了OpenLayers中文网,交流的人很少,所有又发到这里。

之前看了一些继承自TileCache的实现,这里也发一下自己的实现,继承自XYZ类。接触OpenLayers时间不长,没有实际项目应用经验,有理解不清的地方还望各位多多指教,谢谢!

/* Copyright (c) 2002-2012 by fiftyk*/

/**
 * @requires OpenLayers/Layer/XYZ.js
 */

/**
 * @class
 */
OpenLayers.Layer.GMapLayer = OpenLayers.Class(OpenLayers.Layer.XYZ, {
        wrapDateLine:true,
        sphericalMercator:true,
        
        urlTpl:"&hl=zh-CN&gl=CN&src=app&x=${x}&y=${y}&z=${z}",
        
        /**
         * @constructor
         * @param {String} name
         * @param {String} url
         * @param {Object} options
         */
        initialize:function(name,url,options){
                options = OpenLayers.Util.applyDefaults({}, 
                  options);
                
                OpenLayers.Layer.XYZ.prototype.initialize.apply(this,
                  [name,url,options]);
        },
        
        getURL: function (bounds) {
        var xyz = this.getXYZ(bounds);
        var url = this.url;
        if (OpenLayers.Util.isArray(url)) {
            var s = '' + xyz.x + xyz.y + xyz.z;
            url = this.selectUrl(s, url) + this.urlTpl;
        }
        
        return OpenLayers.String.format(url, xyz);
    },
        
        destory:function(){
           this.sphericalMercator = null;
           this.urlTpl = null;
           OpenLayers.Layer.XYZ.prototype.destroy.apply(this, arguments);
        },

        clone:function(obj){
                if(obj == null){
                        obj = new OpenLayers.Layer.GMapLayer(this.name,this.url,
                         this.getOptions());
                }

                obj = OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);

                return obj;
        },

        getXYZ:function(bounds){
                var res = this.getServerResolution();
        var x = Math.round((bounds.left - this.maxExtent.left) /
           (res * this.tileSize.w));

        var y = Math.round((this.maxExtent.top - bounds.top) /
           (res * this.tileSize.h));

        var z = this.getServerZoom();//继承自Grid

        if (this.wrapDateLine) {
            var limit = Math.pow(2, z);
            x = ((x % limit) + limit) % limit;
        }

        return {'x': x, 'y': y, 'z': z};
        },

        CLASS_NAME: "OpenLayers.Layer.GMapLayer"
});

 使用:

var map = new OpenLayers.Map("map",{
                layers:[
                    new OpenLayers.Layer.GMapLayer("Google卫星图层",
                        ["http://mt1.google.cn/vt/lyrs=s@123"]),
                    new OpenLayers.Layer.GMapLayer("Google标注图层",
                        ["http://mt2.google.cn/vt/imgtp=png32&lyrs=h@205000000"]),
                    new OpenLayers.Layer.GMapLayer("Google矢量图层",
                        ["http://mt1.google.cn/vt/lyrs=m@205000000"]),
                    new OpenLayers.Layer.GMapLayer("Google地形图层",
                        ["http://mt1.google.cn/vt/lyrs=t@130,r@205000000"]),
                    new OpenLayers.Layer.GMapLayer("Google路况图层",
                        ["http://mt0.google.com/vt?lyrs=m@205000000,traffic|seconds_into_week:-1"])
                ]
                ,center:new OpenLayers.LonLat(120.30549379552448,31.55342767838905),
            });
            //图层切换控件
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            //鹰眼控件
            map.addControl(new OpenLayers.Control.OverviewMap());

 

0
0
分享到:
评论

相关推荐

    OpenLayers3加载谷歌地图

    OpenLayers3加载谷歌地图,加载谷歌地图显示,实现效果很好,放大比例尺也能看得清楚。文章链接:https://blog.csdn.net/Gary_888/article/details/89914290

    openlayers加载瓦片地图并手动标记坐标点

    本教程将详细介绍如何使用OpenLayers加载瓦片地图以及手动在地图上标记坐标点。 一、OpenLayers 瓦片地图 瓦片地图是一种常见的地图展示方式,它将大尺寸的地图分割成多个小块(即“瓦片”),每个瓦片都是一个较...

    openlayers5加载谷歌地图.zip

    在本案例中,我们讨论的是如何利用OpenLayers 5来加载谷歌地图。对于初学者来说,这是一个很好的起点,因为OpenLayers提供了丰富的API和强大的功能。 首先,我们要了解OpenLayers 5的基本概念。OpenLayers 5的核心...

    openlayers加载本地离线底图瓦片google数据直接运行即可(亲测)

    本案例的主题是“openlayers加载本地离线底图瓦片google数据直接运行即可”,这意味着我们可以通过OpenLayers加载已经下载好的Google Maps离线瓦片数据。离线地图瓦片是一种将大型地图分割成许多小块图片(通常为256...

    openlayers3 调用离线谷歌切片地图 示例

    在本示例中,我们将关注如何加载并显示谷歌地图的离线切片。 谷歌地图通常由一系列的图像切片组成,这些切片按照特定的层级和坐标系统进行组织。在OpenLayers 3中,我们可以通过创建一个新的TileLayer,并定义其源...

    openlayers3添加各种地图资源

    在WebGIS开发中,OpenLayers 3 是一个强大的开源JavaScript库,用于在网页上创建交互式的...提供的代码示例展示了如何加载百度地图、天地图、高德地图和Google地图,这些资源对于WebGIS开发者来说是非常实用的参考。

    openlayers加载本地切片、高亮显示

    这些切片通常按照特定的层级结构组织,如谷歌地图的ZXY格式,其中Z表示层级,X和Y分别表示行和列的索引。 在OpenLayers中,加载本地切片涉及到以下几个关键步骤: 1. **配置地图投影**:地图切片的坐标系统应与...

    openlayers加载google微信影像,完整demo,可直接使用浏览器运行

    【标题】"openlayers加载google微信影像,完整demo,可直接使用浏览器运行"涉及的关键知识点主要集中在OpenLayers库以及WebGIS应用上。OpenLayers是一个开源的JavaScript库,它允许开发者在网页上创建交互式的地图...

    GeoServer学习——OpenLayers3加载KML地图实现框选

    在本主题中,我们将深入探讨如何使用OpenLayers3,一个流行的JavaScript库,来加载KML(Keyhole Markup Language)地图,并实现地图上的框选功能。KML是一种用于存储地理标记数据的XML格式,常用于Google Earth和...

    地图选择及地图偏移解决方案(一)

    每个都有其优缺点,例如谷歌地图提供强大的地图服务但可能需要付费,而OpenStreetMap是开源的,但可能需要更多的自定义工作。 地图偏移问题主要出现在基于不同坐标系统的地图数据上。地球表面被数学化地表示为平面...

    openLayers geoserver常见问题

    创建谷歌地图效果,OpenLayers提供了兼容Google Maps的图层类型。 OpenLayers API和类用于画点、线、面,如`OpenLayers.Geometry.Point`, `OpenLayers.Geometry.LineString`, `OpenLayers.Geometry.Polygon`。 ...

    瓦片地图实现(缓存加载,像素单位平移,缩放)

    此外,还需要结合地图服务,如Google Maps API或OpenStreetMap,获取实际的地图瓦片。对于后端,可能需要用到TileServer或自建地图瓦片服务,以提供瓦片数据。 总的来说,瓦片地图的实现涉及地图数据的分割、缓存...

    openlayers 调用 arcgis server wms服务简单图解

    运行修改后的OpenLayers示例,你将看到ArcGIS Server WMS服务提供的地图层被成功加载到网页中。如果想要添加更多图层,只需重复上述步骤,为每个图层调整相应的参数。 此外,OpenLayers还支持其他服务类型,如REST...

    mapboxwms天地图,高德地图,谷歌地图

    虽然谷歌地图没有官方的WMS服务,但开发者可以借助第三方工具或技术,如TileLayer插件,将谷歌地图的瓦片转换为WMS格式,实现与Mapbox WMS的兼容。 在使用Mapbox WMS时,你需要理解WMS的工作原理:客户端发送请求到...

    vue+openlayers简单示例

    你可以根据需要替换其他地图源,如Google Maps或Bing Maps,或者添加自定义图层。 此外,Vue和OpenLayers结合的好处在于,你可以利用Vue的状态管理(如Vuex)和响应式特性,实现更复杂的功能,如动态加载图层、添加...

    openlayers很多特效demo

    7. 地图服务集成:OpenLayers 可以与各种地图服务提供商(如Google Maps、Bing Maps、OpenStreetMap等)集成,展示不同来源的地图数据。 8. 数据源的动态加载和更新:OpenLayers 支持实时数据的加载和更新,这在...

    openlayers demo.zip

    首先,OpenLayers是一个JavaScript库,它允许开发者将地图数据与Web页面整合,支持多种地图服务提供商,如Google Maps、Bing Maps、OpenStreetMap等。这个库提供了丰富的API,可以处理地图的加载、缩放、平移、图层...

    谷歌卫星地图在OpenLayers中的应用示例.doc

    它支持多种地图服务,包括谷歌地图。 首先,我们需要准备以下两个基本元素: 1. **OpenLayers库**:从OpenLayers的官方网站(http://www.openlayers.org)下载最新的压缩包。在这个示例中,使用的版本是OpenLayers...

    OpenLayers

    - 加载地图源:如谷歌地图源或其他地图服务。 - 创建图层:将地图源绑定到图层。 - 添加图层到地图:将图层添加到地图实例。 示例代码如下: ```javascript var map = new ol.Map({ target: 'map', view: new ol...

    openlayers中文.rar

    - **瓦片(Tiles)**:OpenLayers可以使用瓦片服务来提高地图加载速度,将大地图分割成小块加载。 2. **OpenLayers的使用步骤**: - **引入库文件**:在HTML文件中添加OpenLayers库的链接。 - **创建Map对象**:...

Global site tag (gtag.js) - Google Analytics