1、Map的事件
-
change
(
module:ol/events/Event~BaseEvent
) – 通用更改事件。当修订计数器增加时触发。 -
change:layerGroup
(
模块:ol/Object.ObjectEvent
) -
change:size
(
模块:ol/Object.ObjectEvent
) -
change:target
(
模块:ol/Object.ObjectEvent
) -
change:view
(
模块:ol/Object.ObjectEvent
) -
click
(
module:ol/MapBrowserEvent~MapBrowserEvent
) – 没有拖拽的点击。双击将触发其中的两个。 -
dblclick
(
module:ol/MapBrowserEvent~MapBrowserEvent
) – 真正的双击,没有拖动。 -
error
(
module:ol/events/Event~BaseEvent
) – 通用错误事件。发生错误时触发。 -
moveend
(
module:ol/MapEvent~MapEvent
) – 在地图移动后触发。 -
movestart
(
module:ol/MapEvent~MapEvent
) – 当地图开始移动时触发。 -
pointerdrag
(
module:ol/MapBrowserEvent~MapBrowserEvent
) – 拖动指针时触发。 -
pointermove
(
module:ol/MapBrowserEvent~MapBrowserEvent
) – 当指针移动时触发。请注意,在触摸设备上,这是在平移地图时触发的,因此与 mousemove 不同。 -
postcompose
(
module:ol/render/Event~RenderEvent
) – 在所有层都被渲染后触发。事件对象将没有上下文集。 -
postrender
(
module:ol/MapEvent~MapEvent
) – 在地图框渲染后触发。 -
precompose
(
module:ol/render/Event~RenderEvent
) – 在渲染层之前触发。事件对象将没有上下文集。 -
propertychange
(
module:ol/Object.ObjectEvent
) – 当属性改变时触发。 -
rendercomplete
(
module:ol/render/Event~RenderEvent
) – 渲染完成时触发,即当前视口的所有源和图块都已完成加载,并且所有图块都淡入。事件对象将没有上下文设置。 -
singleclick
(
module:ol/MapBrowserEvent~MapBrowserEvent
) – 真正的单击,没有拖动和双击。请注意,此事件会延迟 250 毫秒,以确保它不是双击。
以上事件都可以通过observable的方法on来实现
2、Map的可观察属性
姓名 |
类型 | 可设置 |
ol/Object.ObjectEvent 类型 |
描述 |
---|---|---|---|---|
|
模块:ol/layer/Group~LayerGroup |
是的 |
|
包含此地图中图层的图层组。 |
|
模块:ol/大小~大小 | 不明确的 |
是的 |
|
DOM 中地图的大小(以像素为单位)。 |
|
HTML 元素 | 字符串 | 不明确的 |
是的 |
|
地图在其中呈现的元素或元素的 id。 |
|
模块:ol/查看~查看 |
是的 |
|
控制此地图的视图。 |
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 版权协议,转载请附上原文出处链接和本声明。