利用JavaScript和騰訊地圖實現地圖衛星圖層功能
地圖衛星圖層是一種在地圖應用中常見的圖層,可以讓用戶以衛星視角查看地圖。本文將介紹如何使用JavaScript和騰訊地圖API實現地圖衛星圖層功能,同時提供代碼示例。
- 調用騰訊地圖API
首先,在HTML文件中引入騰訊地圖API的JavaScript文件,如下:
<script src="//map.qq.com/api/js?v=2.exp&libraries=convertor"></script>
登錄后復制
- 創建地圖
接下來,在JavaScript文件中創建地圖實例,代碼如下:
var map = new qq.maps.Map(document.getElementById('map'), {
center: new qq.maps.LatLng(39.916527,116.397128),
zoom: 13
});
登錄后復制
這里我們創建了一個地圖實例并將其放置在HTML文件中ID為map的元素中。同時設置了地圖的中心點和縮放級別。
- 加載衛星圖層
接著,我們需要加載衛星圖層,并將其添加到地圖中。代碼如下:
var satelliteTileLayer = new qq.maps.TileLayer({
getTileUrl: function(coord, zoom) {
return "http://p1.map.gtimg.com/sateTiles/"+zoom+"/"+Math.floor(coord.x/16)+"/"+Math.floor(coord.y/16)+"/"+coord.x+"_"+coord.y+".jpg";
},
tileSize: new qq.maps.Size(256, 256),
name: "衛星圖"
});
satelliteTileLayer.setMap(map);
登錄后復制
這里,我們創建了一個衛星圖層實例satelliteTileLayer,并使用騰訊地圖的衛星圖層服務http://p1.map.gtimg.com/sateTiles/進行加載。同時,我們設置了圖層的大小和名稱,并將其添加到地圖中。
- 切換衛星圖層
最后,我們可以通過添加按鈕或其他交互方式實現切換地圖模式的功能。代碼如下:
var mapTypeControl = new qq.maps.MapTypeControl({
mapTypeIds: [qq.maps.MapTypeId.ROADMAP, qq.maps.MapTypeId.SATELLITE],
style: qq.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: qq.maps.ControlPosition.BOTTOM_RIGHT
});
mapTypeControl.setMap(map);
登錄后復制
這里,我們創建了一個地圖類型控制對象mapTypeControl,并設置可切換到的地圖類型為qq.maps.MapTypeId.ROADMAP和qq.maps.MapTypeId.SATELLITE,同時設置控制樣式為下拉菜單,放置在右下角。
完整代碼示例如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>地圖衛星圖層功能示例</title>
<script src="//map.qq.com/api/js?v=2.exp&libraries=convertor"></script>
<style>
#map {
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<button onclick="toggleMapType()">切換地圖模式</button>
<script>
var map = new qq.maps.Map(document.getElementById('map'), {
center: new qq.maps.LatLng(39.916527,116.397128),
zoom: 13
});
var satelliteTileLayer = new qq.maps.TileLayer({
getTileUrl: function(coord, zoom) {
return "http://p1.map.gtimg.com/sateTiles/"+zoom+"/"+Math.floor(coord.x/16)+"/"+Math.floor(coord.y/16)+"/"+coord.x+"_"+coord.y+".jpg";
},
tileSize: new qq.maps.Size(256, 256),
name: "衛星圖"
});
satelliteTileLayer.setMap(map);
var mapTypeControl = new qq.maps.MapTypeControl({
mapTypeIds: [qq.maps.MapTypeId.ROADMAP, qq.maps.MapTypeId.SATELLITE],
style: qq.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: qq.maps.ControlPosition.BOTTOM_RIGHT
});
mapTypeControl.setMap(map);
function toggleMapType() {
if (map.getMapTypeId() == qq.maps.MapTypeId.ROADMAP) {
map.setMapTypeId(qq.maps.MapTypeId.SATELLITE);
} else {
map.setMapTypeId(qq.maps.MapTypeId.ROADMAP);
}
}
</script>
</body>
</html>
登錄后復制
使用上述代碼,我們可以實現一個具有地圖衛星圖層功能的地圖應用。






