zoukankan      html  css  js  c++  java
  • 【百度地图API】如何获取行政区域的边界?

    摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值。今天来教大家直接调用百度地图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{width: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>

    相关文章:

    《自行获取区域经纬度的工具》

    http://www.cnblogs.com/milkmap/archive/2012/02/23/2365064.html

  • 相关阅读:
    [转]敏捷软件开发 需求分析
    Windows服务控制命令SC
    [转]敏捷测试工程师的十条法则
    大道至简:如何准确把握趋势 一
    Sqlserver xml 类型操作
    微软Teched2010大会一日游记
    [转]任务、用例、用户故事和场景
    ASUS TF600T上手体验
    Windows 8的各种小发现——不断更新中
    Surface Pro电磁笔故障
  • 原文地址:https://www.cnblogs.com/milkmap/p/2442430.html
Copyright © 2011-2022 走看看