已被阅读 2159 次 | 文章分类:leafLet | 2018-07-30 23:22
该教程主要介绍leaflet如何在地图上添加一些基本的操作控件,以及如何使用地图事件
一:地图控件
1.可以直接通过Controls类给地图添加四个基本控件:比例尺,缩放控件,右下角属性标签,图层控制控件;
//添加缩放控件
L.control.zoom().addTo(map);
//添加比例尺
L.control.scale({
metric:true, // /km
imperial:true // foot
}).addTo(map);
//添加描述标签
L.control.attribution({
prefix:'小白GIS'
}).addTo(map);
// 图层控制控件
var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {minZoom: 0, maxZoom: 18,attribution:'OSM' ,});
var tdt = new L.TileLayer('http://t{s}.tianditu.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={z}&TileRow={y}&TileCol={x}&style=default&format=tiles', {maxZoom: 18,minZoom:0,attribution:'天地图' , subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"] });
var baseLayers = {
"osm": osm,
"tdt": tdt
};
var map = L.map('map_MapBox', {
center: [39.73, -104.99],
zoom: 10,
layers: [osm, tdt]
});
L.control.layers(baseLayers).addTo(map);
图层控制控件需要强调一下,如果引入的css文件是在线文件,则图层控制图标是官方默认的;当然如果是本地样式文件,需要在leaflet.css的同级目录中新建一个images/layers.png文件,替换为任意的图标文件
如果要动态添加缩放控件,需设置 zoomControl:false,防止出现两个的情况
var map = new L.Map('map_MapBox',{
zoomControl:false, //默认隐藏缩放控件
attributionControl:false //隐藏默认的属性前缀:leaflet
});
二:地图事件
1.使用如下方式添加map事件
map.on('事件类型',function(e){}) //具体的事件类型可参考API文档
2.在这里添加如下几个类型介绍一下如何使用map的各种事件
map.on('click', onMapClick):地图点击事件
map.on('zoom',onMapZoom):地图缩放事件
map.on('move',onMapmove):地图移动事件
map.on('moveend',onMapmoveend):地图移动结束事件
map.on('mousemove',onmouseMove):鼠标移动事件
3.完整代码
<!DOCTYPE HTML>
<html>
<head>
<title>地图事件</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link rel="stylesheet" href="../leaflet/leaflet.css">
<script src="../leaflet/leaflet.js"></script>
<style type="text/css">
html,body{
height: 100%;
width: 100%;
}
#map_MapBox{
height:500px;
width:100%;
position:relative;
}
</style>
</head>
<body>
<div id='map_MapBox'>
<div id="stateDiv" style='position:absolute;top:0;right:10px;height:70px;width:200px;background-color:#0a0a0a;z-index:401;'>
<p id='mouseCoor' style='color:white;margin:0 10px;'></p>
<p id='mapLevel' style='color:white;margin:0 10px;'></p>
<p id='mapstate' style='color:green;margin:10px 10px;'></p>
</div>
</div>
<script>
//加载MapBox
var map = new L.Map('map_MapBox');
var map_MapBoxUrl='https://api.mapbox.com/styles/v1/popstar/cjklf93zr6alb2qruedu6ioq4/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoicG9wc3RhciIsImEiOiJjamcwdDhtNnQxZDk4MndwYzR0bmJyeWx2In0.3RFc0AGJgsh-eI5Gsqf7kQ';
var MapBox = new L.TileLayer(map_MapBoxUrl, {id:'MapBox.streets', maxZoom: 18,minZoom:0,attribution:'http://xiaobaigis.com' });
map.setView(new L.LatLng(31.864942016,117.2882028929),0);
map.addLayer(MapBox);
document.getElementById('mapLevel').innerText='当前级别:'+map._zoom;
function onMapClick(e) {
var popup = L.popup();
popup.setLatLng(e.latlng)
.setContent("You clicked the map at " + e.latlng.toString())
.openOn(map);
}
function onMapZoom(){
document.getElementById('mapLevel').innerText='当前级别:'+map._zoom;
}
function onmouseMove(e){
console.log('e');
document.getElementById('mouseCoor').innerText='坐标:('+e.latlng.lat.toString().substring(0,6)+','+e.latlng.lng.toString().substring(0,6)+')';
}
function onMapmove(e){
document.getElementById('mapstate').innerText='地图移动中';
}
function onMapmoveend(){
document.getElementById('mapstate').innerText=' ';
}
map.on('click', onMapClick);
map.on('zoom',onMapZoom);
map.on('move',onMapmove);
map.on('moveend',onMapmoveend);
map.on('mousemove',onmouseMove);
</script>
</body>
</html>
QQ:3410192267 | 技术支持 微信:popstarqqsmall
Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号