绘制 县/乡 范围; 县用大圆标识, 乡用小圆标识;
随着地图缩放倍数, 距离大圆近的小圆会被隐藏
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>CircleMarker</title>
<style type="text/css">
html,
body,
#map {
width: 100%;
height: 100%;
margin: 0;
}
</style>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=1.4.15&key=2cc213d13f7567d2723e87c1540625b5&plugin=AMap.MouseTool,AMap.DistrictSearch"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
</head>
</head>
<body>
<div id="map"></div>
<script>
var mapZoom = 10;
var map = new AMap.Map('map', {
// viewMode: '3D',
zoom: mapZoom,
center: [110.296475, 25.276583]
})
var g_data = [{
id: 'A',
center: [110.67811, 25.617017],
state: 1,
name: '兴安',
list: [
{
id: 'A2',
center: [110.719504, 25.454789],
state: 2,
name: '白石乡',
},
{
id: 'A1',
center: [110.701107, 25.549232],
state: 1,
name: '崔家乡',
}
]
}, {
id: 'B',
center: [111.070567, 25.929973],
state: 2,
name: '全州',
list: [
{
id: 'b2',
center: [111.172537, 25.873726],
state: 2,
name: '白宝乡',
}
]
}, {
id: 'C',
center: [111.159831, 25.490721],
state: 3,
name: '灌阳',
list: [
{
id: 'c2',
center: [111.055255, 25.356615],
state: 2,
name: '黄关镇',
}
]
}, {
id: 'd',
center: [109.983031, 24.979317],
state: 4,
name: '永福',
list: [
{
id: 'd2',
center: [109.985912, 24.928515],
state: 2,
name: '广福乡',
}
]
}
];
var p_data = [];
</script>
<script>
// 高德判定距离
var yuandian = '';
var bijiaodian = '';
var x_dis = '';
var data1
var xlist = []
var xlist1 = []
var arr_new = [];
function test2() {
var brr = g_data.slice();
$.each(brr, function (i, value) {
var arr_s = {
id: value.id,
name: value.name,
center: value.center,
state: value.state,
list: [{ dis: '' }],
}
arr_new.push(arr_s)
yuandian = brr[i].center;
$.each(brr[i].list, function (j, value) {
x_dis = jisuan1(yuandian, value.center)
brr[i].list[j].dis = x_dis;
arr_new[i].list[j] = value;
})
})
screenList();
}
test2();
function jisuan1(p1, p2) {
// 返回 p1 到 p2 间的地面距离,单位:km
var dis = AMap.GeometryUtil.distance(p1, p2) / 1000;
var disz = Math.round(dis * 10) / 10;
return disz;
}
var arr_show = [];
var xlist = [];
function screenList() {
var targetDistance = 0; //当前距离数
var zoom = mapZoom;
switch (zoom) {
case 3:
var targetDistance = 50; //km
break;
case 4:
var targetDistance = 40; //km
break;
case 5:
var targetDistance = 30; //km
break;
case 6:
var targetDistance = 21; //km
break;
case 7:
var targetDistance = 20; //km
break;
case 8:
var targetDistance = 19; //km
break;
case 9:
var targetDistance = 12; //km
break;
case 10:
var targetDistance = 5; //km
break;
case 11:
var targetDistance = 4; //km
break;
case 12:
var targetDistance = 1; //km
break;
case 13:
var targetDistance = 0.5; //km
break;
default:
var targetDistance = 0.25; //km
}
arr_show = [];
var brr = arr_new.slice();
$.each(brr, function (i, value) {
var arr_s = {
id: value.id,
name: value.name,
center: value.center,
state: value.state,
list: []
}
arr_show.push(arr_s)
$.each(brr[i].list, function (j, val) {
if (zoom > 7) {
if (val.dis > targetDistance) {
value_n = val
} else {
value_n = ""
}
arr_show[i].list.push(value_n)
} else {
arr_show[i].list.push([])
return
}
})
})
drawList(arr_show);
}
// 绘制cir
var circleMarkers = [];
function drawList(data) {
map.clearMap();
// 绘制县
circleMarkers = [];
for (var i = 0; i < data.length; i++) {
var center = data[i].center;
var state = data[i].state;
if (state == 1) {
color = "red"
} else if (state == 2) {
color = "orange"
} else if (state == 3) {
color = "yellow"
} else {
color = "green"
}
var circleMarker_x = new AMap.CircleMarker({
center: center,
// radius: 10 + Math.random() * 10,//3D视图下,CircleMarker半径不要超过64px
radius: 40,//3D视图下,CircleMarker半径不要超过64px
strokeColor: 'white',
strokeWeight: 2,
strokeOpacity: 0.5,
fillColor: color,
fillOpacity: 0.5,
zIndex: 10,
bubble: true,
cursor: 'pointer',
clickable: true
})
circleMarkers.push(circleMarker_x);
map.add(circleMarker_x);
// 绘制乡
for (var j = 0; j < data[i].list.length; j += 1) {
var list = data[i].list;
var center = list[j].center;
var state = list[j].state;
if (state == 1) {
color = "red"
} else if (state == 2) {
color = "orange"
} else if (state == 3) {
color = "yellow"
} else {
color = "green"
}
var circleMarker_s = new AMap.CircleMarker({
center: center,
// radius: 10 + Math.random() * 10,//3D视图下,CircleMarker半径不要超过64px
radius: 20,//3D视图下,CircleMarker半径不要超过64px
strokeColor: 'white',
strokeWeight: 2,
strokeOpacity: 0.5,
fillColor: color,
fillOpacity: 0.5,
zIndex: 10,
bubble: true,
cursor: 'pointer',
clickable: true
})
//circleMarker.setMap(map);
map.add(circleMarker_s);
}
}
}
//绑定地图缩放事件
$(document).on("mousewheel DOMMouseScroll", function (e) {
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) || // chrome & ie
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1)); // firefox
if (delta > 0) {
// 向上滚
addmap();
} else if (delta < 0) {
// 向下滚
pushmap();
}
});
function addmap() {
if (mapZoom < 15) {
mapZoom = mapZoom + 1;
map.setZoom(mapZoom);
screenList();
}
if (mapZoom < 9) {
map.remove(circleMarkers);
}
}
function pushmap() {
if (mapZoom > 3) {
mapZoom = mapZoom - 1;
map.setZoom(mapZoom);
screenList();
}
if (mapZoom < 9) {
map.remove(circleMarkers);
}
}
</script>
</body>
</html>