如何從百度地圖中獲取區域邊界的多邊形矢量數據?


打開百度地圖網頁,按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詳解之地圖坐標系統


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM