This article introduces how to use javascript to extract the coordinates of the administrative region boundary longitude and latitude from AMAP and Baidu. This article is highly practical and easy to understand. For more information, see.
Using JavaScript to extract the coordinates of longitude and latitude of administrative region boundary using AMAP and Baidu map _ javascript skills
Preface
Recently, due to work needs, We need to extract the coordinates of the longitude and latitude of some cities. After a slight search, we found that Baidu map and AMAP both provide related functions and examples. then the remaining work is relatively simple. Save the coordinates and convert them to the WGS coordinates to match the existing GPS data and map.
Main Problems and Solutions
Cross-browser support for local file storage
For security reasons, the method for saving files locally in JavaScript is usually only the ActiveXObject/Open method supported by IE. Every time, it is very troublesome to prompt for uneasiness and allow running. fortunately, other browsers currently support tag-based file download methods. the latest Google Chrome, Mozilla Firefox, Baidu browser, and 360 browsers can all run. without talking nonsense, go directly to the Code:
Function Download () {// IEif (/msie/I. test (navigator. userAgent) {var w = window. open ("", "Export", "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" mirror.value?#doc ument. charset = "UTF-8" registry.document.write(content={document.exe cCommand ("SaveAs", false, filename='.txt '); w. close ();} // Firefox/Chrome/Safari/Operaelse {var filename = document. getElementById ("filename "). value; var content = document. getElementById ("content "). value; str = encodeURIComponent (content); document. getElementById ("SaveChrome "). download = filenamepolic'.txt '; var aLink = document. getElementById ("SaveChrome"); aLink. href = "data: text/csv; charsets = UTF-8," + str; aLink. click ();}}
Longitude and latitude Conversion
If you are interested in this topic, you can search for the conversions related to the Mars coordinates by yourself. Services provided on the Internet with a precision of 1 MB can be used for free. The self-writing program has been verified to be within 6 MB.
Baidu Map Method
The key function is the class generated by BMap. Boundary (). By calling the get method, you can obtain the administrative region of the county or municipal level by name.
Function getBoundary () {var bdary = new BMap. boundary (); var name = document. getElementById ("districtName "). value; bdary. get (name, function (rs) {// obtain the administrative region var fileName = ""; var newFileObject = fso. createTextFile (folderName + "\" + name + ". txt ", true); map. clearOverlays (); // clear the map covering var count = rs. boundaries. length; // The number of for (var I = 0; I <count; I ++) {var ply = new BMap. polygon (rs. boundaries [I], {strokeWeight: 2, strokeColor: "# ff0000"}); // create a polygon covering map. addOverlay (ply); // Add a covering map. setViewport (ply. getPath (); // adjust the field of view} newFileObject. write (rs. boundaries [0]); newFileObject. close ();});}
AMAP
By reading the sample file, you can see that the returned boundary value appears in the drop-down list.
AmapAdcode. search = function (adcodeLevel, keyword, selectId) {// query the list of administrative divisions and generate the corresponding drop-down list var me = this; if (adcodeLevel = 'District '| adcodeLevel = 'city') {// query the boundary point this at level 3. _ district. setExtensions ('all');} else {this. _ district. setExtensions ('base');} this. _ district. setLevel (adcodeLevel); // administrative level this. _ district. search (keyword, function (status, result) {// note that the formats returned by the api are not uniform. the following three conditions are used to process 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 );
The districtData. boundaries is what we need. After debugging, we can guess that it is an object that implements the Tostring () method.
"104.639106, 26.863388, 104.644771, 26.861842, 104.64767, 26.854997, 104..." it is obvious that we need gcj coordinates.
Summary
At this point, there is basically no problem, and the rest of the work is to parse the file. the national data needs to be extracted, that is, the nationwide city list file is read cyclically. (I usually search for cityname and find it in my computer. The reason is that I guess I need IP address location like thunder and QQ .)
Importantly, we recommend that you use AMAP because the administrative plan obtained by Baidu map is incorrect and does not include the county magistrate. the most typical is Guizhou Province, where many cities are separated and are complex polygon with islands or holes. baidu is defeated here. the complex polygon can be displayed and processed in MapWinGIS. I will write a note next time.
The above is based on JavaScript to implement AMAP and Baidu map to extract the coordinates of the administrative region boundary latitude and longitude _ javascript skills. For more information, please follow the PHP Chinese Network (www.php1.cn )!