• 【百度地图API】如何获取行政区域的边界?(转载)


    转自:http://www.cnblogs.com/milkmap/archive/2012/04/11/2442430.html

    摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值。今天来教大家直接调用百度地图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.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/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{800px;height:500px;border:1px solid gray}
    </style>
    </head>
    <body>
    <div id="container"></div>
    <br />
    输入省、直辖市或县名称:<input type="text" id="districtName" style="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>
    复制代码
     
     
  • 相关阅读:
    最优匹配问题
    树的最大独立集
    koa2学习(一)
    vue源码阅读(一)
    一直以为错的一个问题,记录一下
    关于 vuex 的使用忠告
    《javascript设计模式与开发实践》--- (单一职责原则)
    心累
    node 学习(二)
    node 学习(一)
  • 原文地址:https://www.cnblogs.com/jiajialove/p/9292766.html
Copyright © 2020-2023  润新知