前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OL2中的多地图联动展示

OL2中的多地图联动展示

作者头像
lzugis
发布2018-10-23 12:16:56
5710
发布2018-10-23 12:16:56
举报

概述:

在前面有篇文章提到了OL3中的多地图联动展示,在本节中讲述在OL2中实现多地图的联动展示。

效果:

实现思路:

在Ol2中,实现多地图的联动展示也是比较简单的。查看OL2中map的api,可知只要添加map的move事件即可。

实现代码如下:

<!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="http://dev.openlayers.org/theme/default/style.css"/>
    <style type="text/css">
        html, body, .map{
            padding:0;
            margin:0;
            height:100%;
        }
        .map{
            width: 50%;
            float: left;
            box-shadow: 1px 1px 1px;
        }
    </style>
    <script type="text/javascript" src="http://dev.openlayers.org/OpenLayers.js"></script>
    <script type="text/javascript">
        var map1, map2;
        function init(){
            function getBaseLayer(layername, layer){
                return new OpenLayers.Layer.XYZ(
                        layername,
                        [
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"

                        ],
                        {
                            isBaseLayer: true,
                            displayInLayerSwitcher:true
                        }
                );
            };
            function getAnnoLayer(layername, layer, visiable){
                return new OpenLayers.Layer.XYZ(
                        layername,
                        [
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}",
                            "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}"

                        ],
                        {
                            isBaseLayer: false,
                            visibility:visiable,
                            displayInLayerSwitcher:false
                        }
                );
            };

            var baseLayers = ["vec_c","img_c"];
            var vecLayer = getBaseLayer("vec",baseLayers[0]);
            var imgLayer = getBaseLayer("img",baseLayers[1]);
            var vecAnno1 = getAnnoLayer("cva", "cva_c", true);
            var vecAnno2 = getAnnoLayer("cva", "cva_c", true);
            var mousepos2 = new OpenLayers.Layer.Markers("mousepos");

            map1 = new OpenLayers.Map({
                div: "map1",
                projection: "EPSG:4326",
                layers: [vecLayer, vecAnno1],
                numZoomLevels:20,
                center: [103.847, 36.0473],
                zoom: 4
            });
            map2 = new OpenLayers.Map({
                div: "map2",
                projection: "EPSG:4326",
                layers: [imgLayer, vecAnno2, mousepos2],
                numZoomLevels:20,
                center: [103.847, 36.0473],
                zoom: 4
            });
            map1.events.register("move", map1, function(evt){ 
                var extent = map1.getExtent();
                map2.zoomToExtent(extent, true);
            });
            map1.events.register("mousemove", map1, function(evt){ 
                mousepos2.clearMarkers();               
                var scrPt = evt.xy;
                var mapPt = map1.getLonLatFromPixel(scrPt);
                var marker = new OpenLayers.Marker(mapPt);
                mousepos2.addMarker(marker);
            });
        }
    </script>
</head>
<body onload="init()">
    <div id="map1" class="map"></div>
    <div id="map2" class="map"></div>
</body>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年09月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档