分享

【百度地图API】如何获取行政区域的边界?

 昵称QAb6ICvc 2017-06-16

摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值。今天来教大家直接调用百度地图API1.3(目前最新版本)来获取行政区域的边界值。

--------------------------------------------------------------------------------------

一、建立地图

创建地图对象;设立中心点。

var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);

二、添加地图事件和控件

控件:鱼骨控件我用了迷你型的;

地图事件:添加了滚轮缩放。

map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));
map.enableScrollWheelZoom();

三、获取行政区域

构造函数Boundary;

get方法,获取行政区域的边界。

rs是获取到的结果。

var bdary = new BMap.Boundary();
bdary.get(name, function(rs){       //获取行政区域
        //这里是用户自己的函数。     
});   

四、添加覆盖物

获取到边界的点数组后,添加一个多边形覆盖物。

var count = rs.boundaries.length; //行政区域的点有多少个
        for(var i = 0; i < count; i++){
            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
            map.addOverlay(ply);  //添加覆盖物
        }    

五、调整视野

points为一系列点的数组,系统自动展示points里所有点。

map.setViewport(points);    //调整视野

 

 

效果图:

 

 

全部源代码:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>获取地区轮廓线</title>

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3">

</script>

<style type="text/css">

body{font-size:13px;margin:10px}

#container{width:800px;height:500px;border:1px solid gray}

</style>

</head>

<body>

<div id="container"></div>

<br />

输入省、直辖市或县名称:<input type="text" id="districtName" style="width:80px" value="重庆市">

<input type="button" onclick="getBoundary()" value="获取轮廓线">


<script type="text/javascript">

var map = new BMap.Map("container");

map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);

map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));

map.enableScrollWheelZoom();


function getBoundary(){       

    var bdary = new BMap.Boundary();

    var name = document.getElementById("districtName").value;

    bdary.get(name, function(rs){       //获取行政区域

        map.clearOverlays();        //清除地图覆盖物       

        var count = rs.boundaries.length; //行政区域的点有多少个

        for(var i = 0; i < count; i++){

            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物

            map.addOverlay(ply);  //添加覆盖物

            map.setViewport(ply.getPath());    //调整视野         

        }                

    });   

}


</script>

</body>

</html>



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多