先看index.html文件的代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/ol.css" type="text/css">
<link rel="stylesheet" href="css/main.css" type="text/css">
<script src="js/jquery1.8.3.min.js" type="text/javascript"></script>
<!-- <script src="js/ol.js" type="text/javascript"></script> -->
<script src="js/ol-debug.js" type="text/javascript"></script>
<script src="js/main.js" type="text/javascript"></script>
<title>OpenLayers example</title>
</head>
<body>
<h2>Map Test</h2>
<div id="map">
<nav id="layers">
<ul>
<li><input type="radio" name="layer" value="mapquest"/>MapQuest OSM</li>
<li><input type="radio" name="layer" value="bingmaps"/>Bing Maps</li>
<li><input type="radio" name="layer" value="esri"/>ESRI Maps</li>
<li><input type="radio" name="layer" value="stamen"/>Stamen</li>
</ul>
</nav>
</div>
</body>
</html>
在ul标签中加入mapquest bingmaps esri stamen.与index.html相应的CSS代码:
.map {
position:absolute;
height: 600px;
width: 100%;
border: 1px red solid;
}
#layers {
position:absolute;
z-index:2;
background-color:rgba(0,60,136,0.7);
color:#fff;
padding:8x 12px;
font-size:12px;
right:25px;
top:5px;
border-radius:8px;
}
#layers > ul{
list-style:none;
}
#layers > ul > li{
padding: 2px 15px 1px 2px;
margin-left:-25px;
}
给#layers中的li标签加载'change'事件:
$("#layers input[type=radio]").live('change',function(){
var layer = $(this).val();
map.getLayers().getArray().forEach(function(e){
var name = e.get('name');
e.setVisible(name == layer);
});
})
如果从OSM切换到bingmaps,则需要申请一个调用bingmaps的key,bingmaps key的申请地址:://www.bingmapsportal.com,同样切换到baidumaps或googlemaps等等都需要相应的key。
var mapquest = new ol.layer.Tile({
source: new ol.source.OSM(),
visible:true,
name:'mapquest'
});
var bingmaps = new ol.layer.Tile({
source: new ol.source.BingMaps({
key:'AmqG5Tq1jbzjo1jTHyUyYqtAwfVf1OotyTiZaCU-AmDskeVi56TTKJ010u9g4j7O',
imagerySet:'AerialWithLabels'
}),
visible:false,
name:'bingmaps'
});
看效果地址(由于另外两幅地图没有申请key,所以暂时不可见):地图切换
近期评论