最近公司做项目,需要用在谷歌地图上勾勒出搜索的行政区块的轮廓。

于是在找各种资料......最后好像是有末尾CSDN的网友提供了思路,具体看正文。

效果如下

先贴代码

[html]  view plain copy
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>demo.html</title>
  5. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  6. <meta http-equiv="description" content="this is my page">
  7. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  8. </head>
  9. <!--google-->
  10. <script type="text/javascript"
  11. src="https://maps.google.com/maps/api/js?sensor=false"></script>
  12. <!--baidu-->
  13. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
  14. <body onload="initialize();">
  15. <div id="map_canvas" style="width: 800px; height: 600px"></div>
  16. <div id="show_x"></div>
  17. <!--显示X坐标-->
  18. <div id="show_y"></div>
  19. <!--显示Y坐标-->
  20. <div id="zoom"></div>
  21. <!--显示缩放级别-->
  22. <div id="message"></div>
  23. 输入省、直辖市或县名称:
  24. <input type="text" id="districtName" style="width: 80px" value="重庆市">
  25. <input type="button" onclick="getBoundary()" value="获取轮廓线">
  26. </body>
  27. <script type="text/javascript">
  28. var map;
  29. function initialize() {
  30. var myLatLng = new google.maps.LatLng(37,
  31. 104);
  32. var myOptions = {
  33. zoom : 4,
  34. center : myLatLng,
  35. mapTypeId : google.maps.MapTypeId.TERRAIN
  36. };
  37. var bermudaTriangle;
  38. map = new google.maps.Map(document.getElementById("map_canvas"),
  39. myOptions);
  40. }
  41. function test() {
  42. }
  43. function getBoundary() {
  44. var bdary = new BMap.Boundary();
  45. var name = document.getElementById("districtName").value;
  46. //多边形定义
  47. bdary.get(name, function(rs) {
  48. points = rs; //获取行政区域
  49. var rslength = rs.boundaries.length;
  50. var top=0;//大
  51. var bottom=0;//小
  52. var left=0;//小
  53. var right=0;//大
  54. for (i = 0; i < rslength; i++) {
  55. var triangleCoords = [];
  56. var temp = rs.boundaries[i];
  57. var latLngs = temp.split(";");
  58. for (j = 1; j < latLngs.length - 1; j++) {
  59. var postion = latLngs[j].indexOf(",");
  60. var lat = parseFloat(latLngs[j].substr(0, postion));//经度
  61. var lng = parseFloat(latLngs[j].substr(postion + 1));//纬度
  62. //加入经纬度
  63. triangleCoords.push(new google.maps.LatLng(lng, lat));
  64. //活动最大,最小经纬度。计算地图中心点
  65. if(j==1&&top==0&&bottom==0&&left==0&&right==0){
  66. top=lng;
  67. bottom=lng;
  68. left=lat;
  69. right=lat;
  70. }else{
  71. if(lng>top){
  72. top=lng;
  73. }
  74. if(lng<bottom){
  75. bottom=lng;
  76. }
  77. if(lat>right){
  78. right=lat;
  79. }
  80. if(lat<left){
  81. left=lat;
  82. }
  83. }
  84. }
  85. bermudaTriangle = new google.maps.Polygon({
  86. paths : triangleCoords,
  87. strokeColor : "#FF0000",
  88. strokeOpacity : 0.8,
  89. strokeWeight : 2,
  90. fillColor : "#FF0000",
  91. fillOpacity : 0.35
  92. });
  93. bermudaTriangle.setMap(map);
  94. }
  95. map.setCenter(new google.maps.LatLng(bottom+((top-bottom)/2),left+((right-left)/2)));
  96. map.setZoom(7);
  97. });
  98. }
  99. </script>
  100. </html>

接着一步一步的看。

第一步:导入谷歌和百度的JS库

[html]  view plain copy
  1. <!--google-->
  2. <script type="text/javascript"
  3. src="https://maps.google.com/maps/api/js?sensor=false"></script>
  4. <!--baidu-->
  5. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>

第二步:从百度地图拿到坐标点。其中的rs变量内存的就是坐标集合。

[html]  view plain copy
  1. var bdary = new BMap.Boundary();
  2. var name = document.getElementById("districtName").value;
  3. //多边形定义
  4. bdary.get(name, function(rs) {
  5. points = rs; //获取行政区域

第三步:解析整理。

[html]  view plain copy
  1. points = rs; //获取行政区域
  2. var rslength = rs.boundaries.length;
  3. var top=0;//大
  4. var bottom=0;//小
  5. var left=0;//小
  6. var right=0;//大
  7. for (i = 0; i < rslength; i++) {
  8. var triangleCoords = [];
  9. var temp = rs.boundaries[i];
  10. var latLngs = temp.split(";");
  11. for (j = 1; j < latLngs.length - 1; j++) {
  12. var postion = latLngs[j].indexOf(",");
  13. var lat = parseFloat(latLngs[j].substr(0, postion));//经度
  14. var lng = parseFloat(latLngs[j].substr(postion + 1));//纬度

第四部:用整理过的数据在谷歌地图上绘制多边形。(坐标有一点偏差)

[css]  view plain copy
  1. bermudaTriangle = new google.maps.Polygon({
  2. paths : triangleCoords,
  3. strokeColor : "#FF0000",
  4. strokeOpacity : 0.8,
  5. strokeWeight : 2,
  6. fillColor : "#FF0000",
  7. fillOpacity : 0.35
  8. });
  9. bermudaTriangle.setMap(map);

第五步:计算中心点坐标。

[javascript]  view plain copy
  1. //加入经纬度
  2. triangleCoords.push(new google.maps.LatLng(lng, lat));
  3. //活动最大,最小经纬度。计算地图中心点
  4. if(j==1&&top==0&&bottom==0&&left==0&&right==0){
  5. top=lng;
  6. bottom=lng;
  7. left=lat;
  8. right=lat;
  9. }else{
  10. if(lng>top){
  11. top=lng;
  12. }
  13. if(lng<bottom){
  14. bottom=lng;
  15. }
  16. if(lat>right){
  17. right=lat;
  18. }
  19. if(lat<left){
  20. left=lat;
  21. }
  22. }

百度地图+谷歌地图 勾画 行政区块边界相关推荐

  1. 谷歌地图谷歌地图_如何有效使用Google地图

    谷歌地图谷歌地图 我爱Google地图! 它简单易用. 夜间模式在夜间导航时会有所帮助,但是您是否充分利用了它? 在这篇文章中,我试图为以下问题的答案提供帮助: 如何充分利用Google地图? 我敢肯 ...

  2. 谷歌地图谷歌地图_为您的Google地图增添真实感

    谷歌地图谷歌地图 使用谷歌地图API是最流行的(如果不是最流行的 )的方式来展现当今网站地理地点之一. 在本教程中,我将演示如何使Google地图更具真实感,并为您提供一些有关如何使自己的地图真正发光 ...

  3. 怎么在html插入谷歌地图,html页面插入百度or谷歌地图

    一.百度地图 1.打开"百度地图生成器"的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 2.在"1.定位中 ...

  4. 百度与谷歌地图瓦片组织方式对比

    百度是从中心点经纬度(0,0)度开始计算瓦片,在第1级时百度将世界地图分为4块. 中心点右上部分(中国地区)占1块. 谷歌是从左上角经纬度(-180,90)度开始计算瓦片,在第1级时谷歌将世界地图分为 ...

  5. javaweb中使用百度、谷歌地图进行定位

    之前给一个公司做了一个定位,调用一个接口获得经纬度,然后在地图上显示, 之前我做了三种显示,百度.谷歌.搜狗,搜狗和百度类似,这里就介绍百度和谷歌了, 之前我们在一个城市里面坐了测试,不一定很准确,但 ...

  6. html5谷歌地图,谷歌地图API和HTML 5

    我是新来的Stackoverflow,所以要善良.谷歌地图API和HTML 5 我一直在使用谷歌地图api和一些其他的东西来制作游戏的项目.这个想法是使用地理定位数据来清除地图上的雾(当你开始时地图充 ...

  7. 苹果地图 谷歌地图 iPhone XS Max

    作为一个 IP 库行业的从业者,不但要把互联网络知识学透,足够的地理知识也是必不可少的技能,两手都要过硬.还没提全球语言大集合,这个槽以后再吐. 这次先说地理知识好了,目前可以说中国地理区县级以上知识 ...

  8. 离线地图瓦片下载 高德地图 谷歌地图 天地图 Mapbox地图 矢量 卫星地图下载

    用于地图瓦片下载离线,支持 高德地图瓦片 谷歌地图 Mapbox bingMap OpenStreeMap 自定义瓦片地址 下载 gitee项目地址 https://gitee.com/houlaid ...

  9. 5张对比图告诉你,天地图,高德地图,百度地图,谷歌地图区别

    先来看看传说中最争议的天地图吧. 最大放大距离,每厘米25米. 我们用这个体育场和下面的大厦做对比..其实还有大厦下的车..(这张图上的车看不清,真有,没骗你们....) 再上一张高德的, 最大50M ...

最新文章

  1. 2-Entity RANSAC:在变化的环境中进行稳健的视觉定位
  2. 10.25T2 二维线段树
  3. HDU 5112 A Curious Matt 水题
  4. cpickle安装_Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略
  5. easyui和Ajax在mvc3中的权限设置
  6. Robot Framework 使用1-环境配置及简单网站兼容性测试(转)
  7. 尝试在Community Server中添加一个页面
  8. SQL2008数据库的备份与还原
  9. android应用开发全程实录-你有多熟悉listview? getView重写 inflate使用
  10. 怎么做微信答题小程序
  11. 失恋33天——我用57天考了一个5A
  12. 全流程东方时尚C1考试经历
  13. 为什么阿里,腾讯,百度和京东都是在开曼岛注册的?
  14. ios 穿山甲广告联盟集成_GitHub - ducaiwei/Pangolin: Flutter 广告SDK-字节跳动-穿山甲 集成...
  15. 联想拯救者笔记本U盘重装win10系统教学
  16. SWF (Simple Workflow Service)简介
  17. 选择室内地图提供商时需要考虑的12件事
  18. 阿龙的学习笔记---Effective C++---第一章:习惯C++
  19. 机器学习必备------手把手教你安装sklearn包
  20. Kotlin Android 环境搭建

热门文章

  1. oracle 创建sde,创建多个sde库
  2. 注意!2023年你必须要了解的IT各行业趋势
  3. java基础T什么意思_Java基础001:T T的含义
  4. 航班系统C语言程序流程图,飞机订票系统(C语言代码及流程图)
  5. mmdetection multi_apply
  6. 8年测试老鸟总结,软件测试工程师关键成长晋升要素,这些不能不知道...
  7. Python 多线程(threading模块)
  8. 国产解谜游戏《盲点》:扬长避短,解谜与剧情相得益彰的精品
  9. JS复习 九宫格抽奖
  10. HTML5+CSS3+JS小实例:始终飞向鼠标的纸飞机