百度地图随机生成某个行政区域的随机坐标
主要是为了生成模拟数据
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>百度地图随机生成某个行政区域的随机坐标</title>
<!-- 必须要更改AK -->
<!-- 必须要更改AK -->
<!-- 必须要更改AK -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的AK"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js"></script>
</head>
<body>
<div id="allmap" style="width:1000px;height:500px"></div>
<div id="divInfo"></div>
</body>
</html>
<script type="text/javascript">
window.onload = function () {
var map = new BMap.Map("allmap");
//中心点坐标
map.centerAndZoom(new BMap.Point(113.665336,34.753203), 5);
map.enableScrollWheelZoom();
var bdary = new BMap.Boundary();
//要显示的行政区域 可以是为 市 县 区
bdary.get("金水区", function (rs) { //获取行政区域
map.clearOverlays(); //清除地图覆盖物
var count = rs.boundaries.length; //行政区域的点有多少个
if (count === 0) {
alert('未能获取当前输入行政区域');
return;
}
var pointArray = [];
for (var i = 0; i < count; i++) {
var ply = new BMap.Polygon(rs.boundaries[i]); //建立多边形覆盖物
map.addOverlay(ply); //添加覆盖物
pointArray = pointArray.concat(ply.getPath());
map.setViewport(pointArray);
//控制坐标范围
var res = "";
var minX = 113.665336; //这里控制生成坐标的范围
var minY = 34.753203; //这里控制生成坐标的范围
var x = 0;
var y = 0;
var pt = null;
for (var i = 0; i < 200; i++) {
x = minX + getRandom();
y = minY + getRandom();
pt = new BMap.Point(x , y);
if (BMapLib.GeoUtils.isPointInPolygon(pt, ply)) {
console.log(x,y);
var marker = marker = new BMap.Marker(new BMap.Point(x, y));
map.addOverlay(marker);
//res += 'marker = new BMap.Marker(new BMap.Point(' + x + ' ,' + y + '));<br/>map.addOverlay(marker);<br/> ';
}
}
divInfo.innerHTML = res;
}
//map.setViewport(pointArray); //调整视野
//addlabel();
});
document.getElementById("divInfo").innerHTML = Math.random()/4;
}
function getRandom() {
return Math.random() / 2;
}
</script>