如何从百度地图中获取区域边界的多边形矢量数据?

打开百度地图网页,按F12打开开发者模式,在搜索框输入要查找的地点,按搜索或回车

找到如下面图片所示的链接

右击新链接打开,打开的是js文件,火狐浏览器不会解析,可用保存到本地,然后把文件后缀改为json,在用火狐浏览器打开,就可以了

展开content对象的第一个值,看看有没有aoi这个键,有的话往下划

找到profile_geo这个键,它的值就是边界坐标点了,不过需要对数据进行一下过滤

获取到的坐标为平面坐标,需要转换成经纬度坐标

坐标转换

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>墨卡托坐标转经纬度坐标</title>
<meta name="description" content="123"/>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<div style="display:none;" id="container"></div>
<div style="width:500px;height:270px;float:left;margin:0 0 0 10px;">
    <p>墨卡托坐标x:<input type="text" value="12128773.43" id="mctX" /></p>
    <p>墨卡托坐标y:<input type="text" value="4040249.00" id="mctY" /></p>
    <p id="pointX"></p>
    <p id="pointY"></p>
    <p id="entertaiment"></p>
    <p><input style="width:400px;height:80px;font-size:30px;" type="button" value="墨卡托坐标转经纬度坐标" onclick="mctGeo();" /></p>
    <div id="panel"></div>
</div>
</body>
</html>
<script type="text/javascript">
//以下两句话为创建地图
var map = new BMap.Map("container");

function mctGeo(){
    var mctXX = document.getElementById("mctX").value;
    var mctYY = document.getElementById("mctY").value;    
    var mctXY = new BMap.Pixel(mctXX,mctYY);    
    
    var projection2 = map.getMapType().getProjection();
    var LngLat = projection2.pointToLngLat(mctXY);    
    
    document.getElementById("pointX").innerHTML = "经纬度lng: " + LngLat.lng;
    document.getElementById("pointY").innerHTML = "经纬度lat: " + LngLat.lat;
}
</script>

参考文章:
百度地图AOI面数据获取
百度地图API详解之地图坐标系统

posted @ 2022-04-17 00:47  槑孒  阅读(1319)  评论(0编辑  收藏  举报