先看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,所以暂时不可见):地图切换
近期评论