先看效果:

1、引入百度地图API

引入百度地图API所需要的js

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

2、创建地图

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

3、创建Boundary类以获取行政边界(点的集合),并创建多边形覆盖物

关于Boundary类不清楚可以查看官方类参考文档(点这里查看)

var bdary = new BMap.Boundary();

Boundary类具有一个get方法:get(name: String, callback: function),返回行政区域的边界。 name: 查询省、直辖市、地级市、或县的名称。 callback:执行查询后,数据返回到客户端的回调函数,数据以回调函数的参数形式返回。返回结果是一个数组,数据格式如下: arr[0] = “x1, y1; x2, y2; x3, y3; …” arr[1] = “x1, y1; x2, y2; x3, y3; …” arr[2] = “x1, y1; x2, y2; …” … 否则回调函数的参数为null

具体用法(以获取厦门市行政边界为例)

bdary.get("厦门市", function(rs){       //获取行政区域map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物map.addOverlay(ply);  //将上一步建立的多边形覆盖物添加到地图中pointArray = pointArray.concat(ply.getPath());}    map.setViewport(pointArray);    //调整视野 ,将整个厦门市调整到地图展示区域});

如此,厦门市的整体界限就展示出来了。
接下来为各个区建立多边形覆盖物并添加到地图。

4、为各个区添加名称

多边形覆盖物上没有显示各区名称,现在需要添加各区的名称。
首先找到各区的中心点(通过百度地图坐标拾取工具(点击这里打开))
p.s. 也可以通过多边形各个点坐标计算中点并进行偏移,为什么不这样做是因为在我的项目中,这些点是固定的(其实边界坐标也是固定的,但是为了记录边界坐标的获取方法,我就另外将获取边界点坐标的方法写出来,实际项目使用时运行一次后通过浏览器F12找到返回的json数据,将边界点坐标另外复制下来。网上另文章有说明如何获取以及坐标转换,大家自行搜一下就有了)。

先写一个添加标签覆盖物的函数

该函数需要传入三个参数,分别是经度、纬度和显示文本

function addlabel(lon,lat,text) {var opts1 = {position : new BMap.Point(lon,lat),    // 指定文本标注所在的地理位置}var label1 = new BMap.Label(text, opts1);  // 创建文本标注对象label1.setStyle({color : "red",fontSize : "20px",height : "20px",lineHeight : "20px",fontFamily:"微软雅黑",border:"none"});map.addOverlay(label1);  //添加覆盖物}

然后调用该函数添加label就行了

至于覆盖物的点击事件,采用addEventListener方法为覆盖物添加点击事件的兼听就行了。

5、全部代码

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script><title>添加行政区划</title>
</head>
<body><div id="allmap"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");function getBoundary(){       var bdary = new BMap.Boundary();bdary.get("厦门市", function(rs){       //获取行政区域map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    map.setViewport(pointArray);    //调整视野  //addlabel();               });   bdary.get("思明区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(118.116572,24.470883,"思明区");   });   bdary.get("集美区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(118.003972,24.642993,"集美区");  //map.setViewport(pointArray);    //调整视野  //addlabel();               });   bdary.get("湖里区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(118.129582,24.544266,"湖里区");  });   bdary.get("翔安区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(118.254939,24.624478,"翔安区");  //map.setViewport(pointArray);    //调整视野  //addlabel();               });   bdary.get("同安区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(118.102394,24.760121,"同安区");  //map.setViewport(pointArray);    //调整视野  //addlabel();               });   bdary.get("海沧区", function(rs){       //获取行政区域//map.clearOverlays();        //清除地图覆盖物       var count = rs.boundaries.length; //行政区域的点有多少个if (count === 0) {alert('未能获取当前输入行政区域');return ;}var pointArray = [];for (var i = 0; i < count; i++) {var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#0000ff"}); //建立多边形覆盖物map.addOverlay(ply);  //添加覆盖物pointArray = pointArray.concat(ply.getPath());}    addlabel(117.989833,24.511764,"海沧区");  });   }setTimeout(function(){getBoundary();}, 2000);function addlabel(lon,lat,text) {var opts1 = {position : new BMap.Point(lon,lat),    // 指定文本标注所在的地理位置}var label1 = new BMap.Label(text, opts1);  // 创建文本标注对象label1.setStyle({color : "red",fontSize : "20px",height : "20px",lineHeight : "20px",fontFamily:"微软雅黑",border:"none"});map.addOverlay(label1);  //添加覆盖物}
</script>

这种方法应该还存在许多不足之处,如有更好方法欢迎分享!

百度地图API生成厦门区级行政区划图相关推荐

  1. 百度地图AK申请注意+百度地图API生成热力图+调用百度地图API自动获取经纬度和地址

    文章目录 一.百度地图AK密钥申请 二.调用百度地图API生成热力图 三.调用百度地图API自动获取经纬度和地址 一.百度地图AK密钥申请 点击百度地图API控制台,输入登录账户,即可进入,若账户未完 ...

  2. 数据视化Echarts+百度地图API实现市县区级下钻

    开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...

  3. 百度地图API快速调用,一键生成百度地图

    对于在网站或者网页之内插入百度地图插件,可能很多编程技术人员都知道如何来做,但是做起来所花费的时间都比较长,那么下面跟大家分享一下如何快速调用百度地图API,一件生成百度地图的方法,这种方法适用于任何 ...

  4. IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应

    (转)IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应 IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油 ...

  5. IOS开发百度地图API-用点生成路线,导航,气泡响应

    原地址:http://blog.sina.com.cn/s/blog_68661bd80101k4rx.html IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发 ...

  6. 根据地址生成客户地图及热力图(百度地图API)

    先看效果图: 使用百度地图API实现,目的很简单,因为经常会分析客户地图,通过客户居住/工作地址,自动生成标记点和热力图,做销售的朋友都懂,这可能是家常便饭. 要用到两个百度的API <scri ...

  7. 转:IOS开发百度地图API-用点生成路线,导航,气泡响应

    IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地图视角跳到用户当前位置 IOS百度地图开发实时路况 IO ...

  8. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...

    摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------- ...

  9. 使用百度地图API实现地图生成、标记以及标注

    首先你需要引入一段javaScript <script type="text/javascript" src="http://api.map.baidu.com/a ...

  10. java开发百度地图瓦片_百度地图API:利用瓦片生成工具,自定义背景图片

    一.制作地图的准备工作 其实,你只需要准备一些地图的瓦片图,就可以了. 用切片工具,把一张完整的图片(最好大一些,清楚一些),切成小片,可使用 TileCutter工具. 二.了解百度地图API的地图 ...

最新文章

  1. Oracle 11g sys,system 密码忘记设置解决办法
  2. 2017阿里云TECH INSIGHT干货分享第六届隆重回归
  3. 大型网站系统架构演化之路(转)
  4. IM 融云 之 初始化及登录
  5. 电路知识--认识原理图(四)
  6. 干货分享|UI设计可临摹编辑的线框素材,还会觉得交互原型画得丑?
  7. 03python面向对象编程5
  8. python-numpy.vectorize()
  9. [图解tensorflow源码] TF系统概述篇
  10. python Unicode字符与数值转换
  11. ZOJ1005 Jugs
  12. 4通道并行同步模拟输入,1MSps、16Bit数据采集卡
  13. HCIP-DATACOM H12-831(41-60)
  14. 旧u盘丢失文件如何恢复
  15. msql中常用的DDL语句
  16. 孩子一看学习就上瘾,不信试试看(ZT)
  17. 【转】[中级]我对『PID算法』的理解 —— 原理介绍
  18. 电脑关机后自动重启开机,或过一段时间自动重启开机问题解决
  19. 推荐一个基于vue选择头像的库
  20. Mathematica 解方程组 (数字方程组含表达式的方程组)

热门文章

  1. 3d模型多怎么优化_硕士生金属3D打印斯特林发动机模型,使用3DXpert增长增材制造经验...
  2. 深入理解socket中的recv函数和send函数
  3. 前端学习——Js(JavaScript)入门
  4. QT 操作 QLabel
  5. Android资源代码 源码 整理 Github开源项目下载地址
  6. 软件工程实践—软件评测
  7. docker安装nessus
  8. python 服务器后台运行
  9. PS基本操作介绍与下载
  10. 爬虫实战:遇上gb2312编码的网页