实现思路:

1.利用高德地图行政区域API获得坐标列表

2.将坐标列表绘制在谷歌地图上【因为高德地图和国内的谷歌地图都是采用GCJ02坐标系,所有误差很小,可以不进行坐标误差转换】

注意点:

1.用百度地图的API来绘制行政区域,不太准确,很不推荐。(1)百度地图查询行政区域本身不准确,有的地方本来应该属于该区,被划分到其他区了(2)即使要用百度api,也要注意转换坐标,因为百度,谷歌坐标系不同。贴段转换代码

var x_pi = Math.PI * 3000.0 / 180.0;

//将 BD-09 坐标转换成 GCJ-02 坐标(例如:百度坐标-->谷歌坐标)

function bd_decrypt(bd_lat, bd_lon) {

var x = bd_lon - 0.0065, y = bd_lat - 0.006;

var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);

var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);

var gg_lon = z * Math.cos(theta);

var gg_lat = z * Math.sin(theta);

var result = {};

result.gg_lon = gg_lon;//纬度

result.gg_lat = gg_lat;//经度

return result;

}

2.高德地图API文档写的很好,推荐使用高德地图

不完美的地方:

1.高德地图API提供的坐标,不能完整的画出一个区的轮廓,比如上海崇明区的被划分成几个小圈,而实际上,应该用一个大圈把崇明区包裹起来

对应的需求,绘制出上海的所有行政区的轮廓,实现效果:

核心代码:

showBoundarys();

//显示行政区域

function showBoundarys() {

//利用高德地图的【行政区划查询】api获取上海包含的所有区

AMap.service('AMap.DistrictSearch', function() {

var opts = {

subdistrict: 2, 返回下一级行政区。取值2,可以获取到上海的所有区

extensions: 'all', //返回行政区边界坐标组等具体信息

level: 'city' //查询行政级别为 市

};

//实例化DistrictSearch

var district = new AMap.DistrictSearch(opts);

//行政区查询

district.search("上海市", function(status, result) {

var cityArr = result.districtList[0].districtList[0].districtList;

for(var i=0;i

showBoundary(cityArr[i].adcode);

}

})

});

}

/**

* 用adcode(区域编码)查询,可以唯一定位到具体的地址。

* 用name(行政区名称)可能查出多个地址,不精确

*/

function showBoundary(adcode) {

//利用高德地图的【行政区划查询】api获取每个区的行政区边界坐标点,再根据这些坐标点在谷歌地图上绘制区域轮廓线

//加载行政区划插件

AMap.service('AMap.DistrictSearch', function() {

var opts = {

subdistrict: 0, //返回下一级行政区

extensions: 'all', //返回行政区边界坐标组等具体信息

level: 'district' //查询行政级别为 市

};

//实例化DistrictSearch

var district = new AMap.DistrictSearch(opts);

district.setLevel('district');

//行政区查询

district.search(adcode, function(status, result) {

var bounds = result.districtList[0].boundaries;

if (bounds) {

for (var i = 0, l = bounds.length; i < l; i++) {//每个区域可能有分能几个小块,比如金山区除了有一块陆地圈,还有海上独立的三个小岛

var boundsItem = bounds[i];

var triangleCoords = [];

for(var j = 0; j < boundsItem.length; j++){

triangleCoords.push(new google.maps.LatLng(boundsItem[j].lat, boundsItem[j].lng));

}

var bermudaTriangle = new google.maps.Polygon({

paths : triangleCoords,

strokeColor : "#1c49ff",

strokeOpacity : 0.8,

strokeWeight : 1,

// fillColor : "#FF0000",

fillOpacity : 0,

text:"xxxxx"

});

bermudaTriangle.setMap(map);

map.setZoom(9);

}

}

});

});

}

参考网址:

4.高德地图的API比百度、谷歌的好用,比如行政区域的坐标比百度的精确,接口文档详细,而谷歌的文档还是英文的,例子也不够全。以后选择地图,首选高德地图

6.地球坐标系 (WGS-84)到火星坐标系 (GCJ-02) Javascript版 https://github.com/hiwanz/wgs2mars.js

地图上分成一块一块区域 高德地图_在谷歌地图上绘制行政区域轮廓【结合高德地图的API】...相关推荐

  1. 把地图中的道路以线条提取出来_入围 ICRA 2019 最佳论文:MIT利用粗粒度地图实现自动驾驶...

    MIT最新研究能够利用简单的GPS地图和视觉数据,模仿人类驾驶员的驾驶方式,将学到的知识应用于视障环境中的复杂计划路线,该论文入围ICRA2019最佳论文. 真正的人工智能不是只会机械处理数据,而是要 ...

  2. 云服务器上传文件怎么这么慢,百度云上传速度太慢怎么回事_百度云网盘上传速度太慢怎么解决-win7之家...

    百度云是百度推出的一项云存储服务,给用户们提供文件的网络备份.同步和分享服务,不过最近有用户发现百度云要上传资料的时候发现速度太慢了,这是怎么回事呢,针对这个问题,小编给大家讲解一下百度云网盘上传速度 ...

  3. 如何在github上找到自己想要的代码_如何在 GitHub 上找到免费且实用的软件?

    GitHub 虽说是以程序员为主的社区,但是上面托管的项目类型却风格迥异. 有认真科研型的,也有上班划水型的. 有面向极客宅男的开发工具,也有给小白麻瓜使用的普通软件. 本周写了几篇文章,大多都在介绍 ...

  4. 在windows平台上编写的python程序无法在_在 Windows 平台上编写的 Python 程序无法在 Unix 平台运行。_护理学基础(精品资源课)答案_学小易找答案...

    [单选题]对于IEEE754单精度浮点数加减运算,只要对阶时得到的两个阶码之差的绝对值|△E|大于等于( ),就无需继续进行后续处理,此时,运算结果直接取阶大的那个数. (6.0分) [判断题]婚礼虽 ...

  5. 已知圆上任意两点求圆心和半径_已知圆上三点坐标求圆心和半径

    R半径 PCenter圆点坐标 public void GetCircular(PointF P1,PointF P2,PointF P3,ref float R,ref PointF PCenter ...

  6. 做完系统回来计算机连接不上网络,系统重装后不能上网_重装系统后上不了网怎么办-太平洋IT百科...

    重装系统后不能上网怎么办 电脑重装系统后不能上网,使用网络人远程控制软件重装系统后不能上网,为什么会出现这种情况?要怎么解决?着重分析关于使用网络人远程控制软件重装系统后软件无法启动问题. 步骤/方法 ...

  7. 地图上分成一块一块区域 高德地图_开车用哪个导航最好?看看老司机总结的地图对比,学会不吃亏...

    大家好我是喵哥,现在外出开车不可避免的都会使用导航,而比较主流的无非就是高德和百度,所以今天喵哥就跟大家对比一下百度和高德这两款导航它们之间的优势和劣势,首先喵哥以广州火车站为终点,然后两个地图同时规 ...

  8. vue 高德地图 不同区域显示不同颜色_联测科技丨高德地图不仅仅是拿来导航的...

    高德地图不仅仅当做一个导航工具,他还有许多不一样的用途. 隐藏功能一:制作高大上的PPT地图 高德地图强悍的功能,我们需要进入这个网站:https://lbs.amap.com,也就是高德开放平台. ...

  9. vue 高德地图 不同区域显示不同颜色_没想到高德地图还能这么用,简直是PPT图表神器!...

    本文转自:公众号"旁门左道PPT" 作者:邵云蛟 提到高德地图,相信咱们每一个人都不会陌生,日常用来导航,也可以用来打车,一次呼叫8种车型,非常方便: 但是,如果你把它仅仅当做一个 ...

最新文章

  1. Unity iPhone Touch Animation Tutorial,untiy3d iphone简单动画开发教程
  2. linux Vi搜索和替换字符串
  3. HOJ 2576 HOJ 2577 Simple Computing I II 容斥原理
  4. 工具类:获取 spring 容器中 bean
  5. LeetCode 1979. 找出数组的最大公约数
  6. Spring Boot:Consider defining a bean of type ‘*.*.*‘ in your configuration解决方案
  7. System.Windows.Forms.Application.DoEvents();
  8. 要注意了!这样使用MyBatis框架,被攻击了!
  9. LabVIEW编程LabVIEW开发Memmert oven温箱例程与相关资料
  10. vb mysql 实例,vb数据库(vb编辑access数据库实例)
  11. 银企直连ukey 集中管理方案
  12. 使用libyuv对YUV数据进行缩放,旋转,镜像,裁剪等操作
  13. 抱明月而长终;知不可乎骤得
  14. MPEG-DASH简介
  15. 20175212童皓桢 《Java程序设计》第十周学习总结
  16. Could not connect to broker URL: tcp://localhost:61616?wireFormat.maxInactivityDuration=0wireForma
  17. 单因素方差分析与卡方检验有什么区别,能否举个例子?
  18. Linux学习-40-格式化分区mkfs、mke2fs命令用法
  19. BIDS Helper (Free)微软BI开发辅助工具--非常棒
  20. 【计算机毕业设计】在线考试系统

热门文章

  1. java如何excel导入_java实现Excel导入(迭代一)
  2. Second-Order Cone Programming(SOCP) 二阶锥规划
  3. Idea工具如何使用
  4. 客户服务知识库的最佳实践7个步骤
  5. Java计算两个时间点的工作日
  6. CTF中编码与加解密总结
  7. UBUNTU 18.04 GPU + miniconda3 + pytorch + yolo v5 安装测试
  8. 案例21:Java农产品供求信息系统设计与实现开题报告
  9. android5rom下载,android5.2系统|安卓android5.2系统刷机包正式版 5.2 - 系统天堂
  10. web 页面 常用分辨率(PC 移动端)