开源WebGIS开发——Map的事件和可观察属性

  • Post author:
  • Post category:其他


1、Map的事件


以上事件都可以通过observable的方法on来实现

2、Map的可观察属性

姓名

类型 可设置
ol/Object.ObjectEvent

类型
描述

layerGroup


模块:ol/layer/Group~LayerGroup

是的
change:layergroup

包含此地图中图层的图层组。


size


模块:ol/大小~大小

| 不明确的
是的
change:size

DOM 中地图的大小(以像素为单位)。


target

HTML 元素 | 字符串 | 不明确的
是的
change:target

地图在其中呈现的元素或元素的 id。


view


模块:ol/查看~查看

是的
change:view

控制此地图的视图。

3、练习代码


<!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" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="ol.css">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .map{
            width: 50%;
            height: 100%;
            position: absolute;
        }
        .map1{
            width: 50%;
            height: 100%;
            margin-left: 50%;
            position: absolute;
        }
        #wxhq{
            width: 32px;
            height: 32px;
            background: url(wjx.png) center center no-repeat;
            background-size: 100% 100%;
        }
        .change{
            z-index: 2;
            position: absolute;
        }
    </style>
</head>
<body>
      <input class="change" type="button" value="改变地图绑定控件" onclick="change()">
    <div id="map" class="map"></div>
    <div id="map1" class="map1"></div>
    <div id="wxhq"></div>
    <script src="ol.js"></script>
    <script>
        // 加载openstreet图层 墨卡托投影
        // var osmLayer = new ol.layer.Tile({
        //     source: new ol.source.OSM()
        // })
        //WGS84投影 天地图
        var tdtmap = new ol.layer.Tile({
            source:new ol.source.XYZ({
                url:"http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=7ab767e38fe3d9c04f144a091cff214f"
            })
        })
        var zjmap = new ol.layer.Tile({
            source:new ol.source.XYZ({
                url:"http://t4.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=7ab767e38fe3d9c04f144a091cff214f"
            })
        })

        //定义地图的中心
        // var beijing = ol.proj.transform([116.40,39.92],"EPSG:4326","EPSG:3857");
        //创建视图
        var projection = new ol.proj.Projection({
            code:"EPSG:4326",
            units:"degrees"  
        })
        var view = new ol.View({
            projection:projection,
            center:[116.40,39.92],
            zoom:10
        })
        //创建地图控件
        var controls = new ol.control.defaults().extend([new ol.control.FullScreen()]);
        //创建一个互动控件
        var interactions =  new ol.interaction.defaults().extend([new ol.interaction.DragRotateAndZoom()]);
        //创建一个悬浮控件
        var overlay = new ol.Overlay({
            position:[116.40,39.92],
            element:document.getElementById("wxhq")
        })
        var map = new ol.Map({
            target:"map",
            controls:controls,
            interactions:interactions,
            layers:[tdtmap,zjmap],
            overlays:[overlay],
            moveTolerance:1
        })
        map.setView(view);
        console.log(map.getView());
        map.on("movestart",function(e){
            console.log("我要开始移动了")
        })
        map.on("moveend",function(e){
            console.log("我已经结束移动了")
        })

        function change(){
            //获取地图当前绑定的div
            var target = map.getTarget();
            if(target =="map"){
                map.setTarget("map1");
            }else{
                map.setTarget("map");
            }
        }

        map.on("change:target",function(e){
            console.log("地图的目标发生改变了哦")
        })


    </script>
</body>
</html>



版权声明:本文为yl14774636230原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。