JavaScriptに基づいてAmapおよびBaidu地図から行政地域境界の経度および緯度座標を抽出する
基于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 == 'district'||adcodeLevel == 'city') {//第三级时查询边界点 this._district.setExtensions('all'); } else { this._district.setExtensions('base'); } 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 = ''; } 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)!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











1. まず携帯電話にAmapアプリをインストールして開き、[マイ]をクリックして[ログイン/登録]を選択します。 2. 必要に応じて登録する携帯電話番号、WeChat、または Alipay を選択し、プロンプトに従って携帯電話番号、パスワードなどの個人情報を入力します。 3. 入力完了後、[登録]をクリックするとアカウントの登録が完了します。 4. その後、登録時に選択した方法でログイン認証を行います(携帯電話番号で登録した場合は、携帯電話番号とパスワードを入力してログインする必要があります)。

はい、セキュリティ、パーソナライズされたサービス、アカウント管理のため、Amap では携帯電話番号での登録が必要です。登録手順は次のとおりです。Amap アプリを開き、「マイ」および「ログイン/登録」をクリックし、登録する携帯電話番号を選択し、携帯電話番号を入力して確認コードを取得し、パスワードを設定して登録を完了します。

このウェブサイトは7月24日、Moore ThreadとBaidu Mapsが最近、技術と製品におけるそれぞれの利点を活用してデジタルツインマップの技術革新を共同で推進する戦略的協力協定に署名したと報じた。協力合意によると、両当事者は百度地図の地図エンジンの利点、デジタルツイン技術の利点、地図ビッグデータアプリケーションの利点、3DグラフィックスレンダリングとAIコンピューティング技術を活用したデジタルツインマッププロジェクトの構築に注力する。ムーアのスレッドのフル機能の GPU が積極的に実行できる利点 深く広範な継続的な協力により、デジタル ツイン マップ ソリューションのアプリケーションと大規模な実装が共同で促進されます。 Moore Thread の公式紹介によると、地図データは国の重要な資産であり、デジタル ツイン マップは、レンダリング パフォーマンスと GPU のパフォーマンスに大きな影響を与える高負荷レンダリング シナリオにおけるその重要性を特に強調しています。

Amap ナビゲーションで音が出ない理由には、不適切なスピーカー接続、デバイスの音量の低下、間違った Amap 設定、バックグラウンド アプリケーションの干渉、携帯電話のサイレント モードまたは振動モード、システム許可の問題などが含まれます。解決策は次のとおりです: スピーカーの接続を確認する、音量を調整する、Amap マップの設定を確認する、バックグラウンド アプリケーションを閉じる、電話モードを確認する、権限を付与する、デバイスを再起動する、Amap マップを更新する、カスタマー サービスに連絡する。

4月16日のニュースによると、Xiaomiユーザーは最近実用的な新機能を歓迎しています - Xiaomi CarWithはAmapレーンナビゲーションを正式に開始しました。このサービスの開始により、ドライバーは間違いなく、より正確で便利なナビゲーション体験を得ることができます。データによると、AmapとCarWithの統合によりシームレスな接続が実現し、ユーザーは追加のソフトウェアアップデートを必要とせずに車線レベルのナビゲーションの正確なガイダンスを直接体験できるという。この改善はサーバー側で行われる可能性が高く、ユーザーは面倒な更新手順を省略できます。車線レベルのナビゲーションは、Amap の革新的な機能であり、実際の道路レイアウトを画面上に高度に復元し、車線の数、地面標示、入口と出口、特別な車線、および現在の道路上のその他の情報を明確に表示します。 、ドライバーにより包括的な情報を提供します。

Kongying Tavern Genshin Impact Map の最新バージョンは、Genshin Impact ファンのために特別に作成されたユニークなマップ補助ソフトウェアです。このソフトウェアは、Genshin Impact のさまざまなエリアの主要なゲーム マップに関する詳細な情報を提供します。かなり強力な編集および注釈機能です。プレイヤーは原神オンラインでさまざまなタイプの問題を解決できます。 Kongying Tavern マップを Genshin Impact モバイル版と同期するにはどうすればよいですか? 1. まず、最新バージョンをダウンロードし、インストール後にフローティング ウィンドウの形式で実行する必要があります。 2. 次に、原神を開き、ゲームに入ります。ゲームマップを開くと、多くのマークが表示されます。 3. プレーヤーは、左側に表示したいリソース タグを選択できます。 4. 次に、マークされた場所に移動し、対応する操作を実行して、必要なリソース プロパティを取得するだけです。 5. 最後に、右上隅をクリックします。

Amap で旅行記録を表示する手順: 1. Amap にログインします。 2. 「My」→「My Travel」と入力します。 4. クリックして詳細を表示します。 。

Amap APP は、プロフェッショナルで使いやすい無料の地図ナビゲーション ソフトウェアで、場所の問い合わせ、ルートの計画、表示など、さまざまな機能を備えています。ストリートビューの地図や経度や緯度に関する問い合わせはここで解決できます。この操作は想像以上に簡単で便利です。ここで地図や位置情報を共有すると、人々はより安心感を得ることができます。多くの場合、家にいる一部の子供や高齢者にとって、外出するときに人々がより不安になるでしょう、さまざまな状況に遭遇したときに、誰もが道に迷う状況を避けることができます。
