实现效果:
<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>区域掩模</title>
<style>
body,html,#container{ margin:0;width: 100%;height: 100%}
</style>
</head>
<body>
<div id="container"></div>
<script language="javascript" src="https://webapi.amap.com/maps?v=1.4.14&key=de45c1a0e7ea44bea49388cea9cca2f7&plugin=AMap.DistrictSearch"></script>
<script language="javascript">
var opts = {
subdistrict: 0,
extensions: 'all',
level: 'province'
};
//利用行政区查询获取边界构建mask路径
//也可以直接通过经纬度构建mask路径
var district = new AMap.DistrictSearch(opts);
district.search('青海省', function(status, result) {
var bounds = result.districtList[0].boundaries;
var mask = []
for(var i =0;i<bounds.length;i+=1){
mask.push([bounds[i]])
}
var map = new AMap.Map('container', {
mask:mask,
center:[95.77,36.62],
viewMode:'3D',
zoom:5,
mapStyle: 'amap://styles/021981e1781074e215441507a954df4b', //设置地图的显示样式
});
//添加高度面
var object3Dlayer = new AMap.Object3DLayer({zIndex:100});
map.add(object3Dlayer)
var height = -8000;
var color = '#red';
var wall = new AMap.Object3D.Wall({
path:bounds,
height:height,
color:color
});
wall.transparent = true
object3Dlayer.add(wall)
//添加描边
for(var i =0;i<bounds.length;i+=1){
new AMap.Polyline({
path:bounds[i],
strokeColor:'#3078AC',
strokeWeight:3,
map:map
})
}
});
</script>
</body>
</html>
二,只显示某个省份简单写法
代码:
<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>区域掩模</title>
<style>
body,html,#container{ margin:0;width: 100%;height: 100%}
</style>
</head>
<body>
<div id="container"></div>
<script language="javascript" src="https://webapi.amap.com/maps?v=1.4.14&key=de45c1a0e7ea44bea49388cea9cca2f7&plugin=AMap.DistrictSearch"></script>
<script language="javascript">
var opts = {
subdistrict: 0,
extensions: 'all',
level: 'province'
};
//利用行政区查询获取边界构建mask路径
//也可以直接通过经纬度构建mask路径
var district = new AMap.DistrictSearch(opts);
district.search('青海省', function(status, result) {
var bounds = result.districtList[0].boundaries;
var mask = []
for(var i =0;i<bounds.length;i+=1){
mask.push([bounds[i]])
}
var map = new AMap.Map('container', {
mask:mask,
center:[95.77,36.62],
viewMode:'3D',
zoom:5
});
//添加描边
for(var i =0;i<bounds.length;i+=1){
new AMap.Polyline({
path:bounds[i],
strokeColor:'#3078AC',
strokeWeight:20,
map:map
})
}
});
</script>
</body>
</html>
直接新建个html,把上述代码复制进去,然后chrome浏览器打开据可以了。
如果不行的话,就是高德地图的key,你得用你自己的。
没有自己的key,就需要在高德这里注册这个key:https://console.amap.com/dev/key/app。
另外,因为这里用了获取省份边界的插件,所以是需要这个plugin的: