首页 web前端 js教程 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

Mar 30, 2017 am 10:34 AM

基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标_javascript技巧

前言

近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GPS数据以及地图匹配.

主要问题和解决方法

本地保存文件跨浏览器支持

由于安全的原因,JavaScript本地保存文件的方式通常都只有IE支持的ActiveXObject/Open方法,每次都要提示不安全和允许运行,非常麻烦.好在其他浏览器目前都支持标签实现文件下载的方法.经测试最新的Google Chrome, Mozilla Firefox,百度浏览器,360浏览器下都可以运行.不说废话,直接上代码:


function Download() {
// IE
if(/msie/i.test(navigator.userAgent)) {
var w = window.open("", "导出", "height=0,width=0,toolbar=no,menubar=no,scrollbars=no,resizable=on,location=no,status=no");
var filename = document.getElementById("filename").value ;
var content = document.getElementById("content").value;
w.document.charset = "UTF-8";
w.document.write(content);
w.document.execCommand("SaveAs", false, filename+'.txt');
w.close();
}
// Firefox/Chrome/Safari/Opera
else {
var filename = document.getElementById("filename").value ;
var content = document.getElementById("content").value;
str = encodeURIComponent(content); 
document.getElementById("SaveChrome").download = filename+'.txt'; 
var aLink = document.getElementById("SaveChrome") ; 
aLink.href = "data:text/csv;charset=utf-8,"+str; 
aLink.click(); 
}
}
登录后复制

经纬度转换

这个话题感兴趣的朋友可以自己搜索火星坐标相关转换,精度在1m范围的网上提供有服务可以免费使用.自写程序经验证精度在6m 以内.

百度地图方法

关键函数是 BMap.Boundary() 生成的类,调用它的方法get就可以通过名称获得县或市级以上的行政区域.


function getBoundary() {
var bdary = new BMap.Boundary();
var name = document.getElementById("districtName").value;
bdary.get(name, function (rs) { //获取行政区域
var fileName = "";
var newFileObject = fso.CreateTextFile(folderName + "\\" + name + ".txt", true);
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()); //调整视野
}
newFileObject.write(rs.boundaries[0]);
newFileObject.Close();
});
}
登录后复制

高德地图

关键代码通过阅读示例文件可以发现在下拉列表返回里面有边界值的出现.


amapAdcode.search = function(adcodeLevel, keyword, selectId) {//查询行政区划列表并生成相应的下拉列表
var me = this;
if (adcodeLevel == &#39;district&#39;||adcodeLevel == &#39;city&#39;) {//第三级时查询边界点
this._district.setExtensions(&#39;all&#39;);
} else {
this._district.setExtensions(&#39;base&#39;);
}
this._district.setLevel(adcodeLevel); //行政区级别
this._district.search(keyword, function(status, result) {//注意,api返回的格式不统一,在下面用三个条件分别处理
var districtData = result.districtList[0];
if (districtData.districtList) {
me.createSelectList(selectId, districtData.districtList);
} else if (districtData.districts) {
me.createSelectList(selectId, districtData.districts);
} else {
document.getElementById(selectId).innerHTML = &#39;&#39;;
}
map.setCenter(districtData.center);
me.clearMap();
me.addPolygon(districtData.boundaries);
登录后复制

其中的districtData.boundaries 就是我们需要的.调试了一下,大胆猜测果然是实现了Tostring() 方法的一个对象.
"104.639106,26.863388,104.644771,26.861842,104.64767,26.854997,104.647748..." 很明显的就是我们需要的gcj坐标.

总结

至此,基本也就没有什么问题了,剩余的工作就是解析得到的文件.需要提取全国的数据也就是循环读取全国城市列表文件了.(通常搜索cityname,电脑里面都会找到的,原因,呵呵,猜测是迅雷,QQ之类的IP定位需要吧.)

重要的一点,推荐使用高德地图,原因就是百度地图得到的行政规划有问题,不包含县级市.最典型的就是贵州省,很多地市都是分离的,是带岛或洞的复杂多边形.百度在这里完败.关于怎么处理这里复杂的多边形以支持在MapWinGIS显示和处理,下次会写一篇笔记.

以上就是基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标_javascript技巧的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

高德地图怎么注册 高德地图怎么注册 Apr 08, 2024 pm 04:39 PM

1、首先在手机上安装并打开高德地图app,点击【我的】并选择【登录/注册】。2、根据需要选择手机号、微信或支付宝注册,按照提示填写个人信息,包括手机号、密码等。3、填写完毕后,点击【注册】即可完成账号注册。4、之后,使用注册时选择的方式进行登录验证,如通过手机号注册,则需输入手机号和密码登录。

高德地图是不是要手机注册 高德地图是不是要手机注册 May 05, 2024 pm 05:12 PM

是的,为了安全保障、个性化服务和账号管理,高德地图需要使用手机号码注册。注册步骤包括:打开高德地图应用,点击“我的”和“登录/注册”,选择手机号码注册,输入手机号码获取验证码,设置密码即可完成注册。

摩尔线程与百度地图签订战略合作,共创全新一代数字孪生地图 摩尔线程与百度地图签订战略合作,共创全新一代数字孪生地图 Jul 25, 2024 am 12:31 AM

本站7月24日消息,近日,摩尔线程与百度地图签署战略合作协议,双方将发挥各自技术、产品方面的优势,共同推动数字孪生地图的技术创新。根据合作协议,双方将围绕数字孪生地图项目建设,利用百度地图的地图引擎优势、数字孪生技术优势、地图大数据应用优势,以及摩尔线程全功能GPU的3D图形渲染和AI计算技术优势,积极开展深入广泛的持续性合作,共同推动数字孪生地图解决方案的应用和规模化落地。据摩尔线程官方介绍,地图数据作为国家的关键资产,数字孪生地图尤其凸显了其在高负载渲染场景中的重要性,这对GPU的渲染效能及

高德地图导航没有声音怎么回事 高德地图导航没有声音怎么回事 Apr 02, 2024 am 05:09 AM

高德地图导航没有声音的原因包括扬声器连接不当、设备音量调低、高德地图设置错误、后台应用干扰、手机静音或震动模式、系统权限问题。解决方法依次为:检查扬声器连接;调整音量;检查高德地图设置;关闭后台应用;检查手机模式;授予权限;重启设备;更新高德地图;联系客服。

小米CarWith携手高德地图,开启车道级导航新纪元 小米CarWith携手高德地图,开启车道级导航新纪元 Apr 16, 2024 pm 08:34 PM

4月16日消息,近日,小米用户迎来了一项实用的新功能——小米CarWith正式上线了高德地图车道导航。此项服务的推出,无疑将为驾驶者带来更为精准、便捷的导航体验。根据数据,高德地图与CarWith的集成实现了无缝对接,用户无需进行额外的软件更新,即可直接体验车道级导航的精准指引。这一改进很可能是在服务器端进行的,为用户省去了繁琐的更新步骤。汽车道级导航是高德地图的一项创新功能,它能在屏幕上高度还原真实的道路布局,清晰展示当前道路的车道数量、地面标识、出入口以及特殊车道等信息,为驾驶者提供更全面、

原神空荧酒馆怎么和游戏同部 空荧酒馆地图怎么同步原神手机版 原神空荧酒馆怎么和游戏同部 空荧酒馆地图怎么同步原神手机版 Aug 01, 2024 pm 01:54 PM

空荧酒馆原神地图手机版最新版本是一款专为原神爱好者所打造的独特的地图辅助软件,这款软件详细的提供了原神之中各个不同区域的各大游戏地图,提供了相当强大的编辑标注功能,玩家可以在线解决原神中的各种不同类型的问题。空荧酒馆地图怎么同步原神手机版?1、首先需要先下载最新版本的,安装好后以悬浮窗的形式运行。2、接着打开原神并进入游戏后,打开游戏地图就可以看到很多的标记。3、玩家可以在左边选择想要显示的资源标记。4、然后只需要前往标记的地点,进行相应的操作就可以获得想要的资源道具。5、最后还可以点击右上角的

高德地图出行记录怎么查看 高德地图出行记录怎么查看 May 05, 2024 pm 05:21 PM

查看高德地图出行记录步骤:1. 登录高德地图;2. 进入“我的”→“我的出行”;3. 查看出行记录列表;4. 点击查看详情;5. 导出记录(可选)。

怎么使用高德地图开启家人地图与家人共享地图    与家人共享地图的方法步骤 怎么使用高德地图开启家人地图与家人共享地图 与家人共享地图的方法步骤 May 04, 2024 pm 03:34 PM

  高德地图APP是一款专业好用的免费地图导航的软件,大家非常的喜欢,这里都是拥有着各种各样的一些功能,完全都能够为我们的生活带来极大的便利,什么一些地点的查询,路线的规划,查看到一些街景地图,或者是经纬度的查询,这里都能为你们解决的,操作简单便捷,超乎你们的想想哦,很多的一些时候,大家都是喜欢在这共享地图,共享自己的位置信息,都感到更加的有安全感,十分不错,很多的一些时候,对于自己家中的一些小孩或者是老人来说,他们出门的话,都是会让人比较担心,遇到各种的一些情况,避免大家会走丢的这一情况,就能

See all articles