ขั้นตอนการดำเนินการ
1. อินเทอร์เฟซแบบสอบถาม
มีอินเทอร์เฟซค่อนข้างน้อยของประเภทนี้บนเว็บไซต์ ผู้เขียนพบอินเทอร์เฟซของแผนที่ Baidu โดยตรง API ที่เรียกว่าเป็นบริการ georcoding ใน Georcoding API
ขอตัวอย่าง: Geocode Query ของอาคาร Baidu ในปักกิ่ง
http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderOption&output=json&address=百度大厦&city=北京市
สิ่งนี้ต้องใช้พารามิเตอร์ AK ซึ่งเป็นสตริงที่สร้างโดยผู้ใช้เมื่อสร้างแอปพลิเคชันและจำเป็นต้องเรียกเมื่อร้องขอข้อมูล
[สังเกต]
แอปพลิเคชันที่สร้างขึ้นเป็นประเภทฝั่งเซิร์ฟเวอร์
มีวิธีการตรวจสอบสองวิธีให้เลือกเมื่อสร้างแอปพลิเคชัน คุณสามารถเลือกที่จะใช้การตรวจสอบการอนุญาตแบบอนุญาตให้ใช้ IP หรือใช้ SN เพื่อตรวจสอบ ความแตกต่างระหว่างทั้งสองคือ IP จำเป็นต้องตั้งที่อยู่ IP เมื่อคุณขอล่วงหน้า หากคุณไม่ต้องการตั้งค่าที่อยู่ IP ที่ตายแล้วล่วงหน้าคุณสามารถเลือกการตรวจสอบ SN นี่คือวิธีการตรวจสอบโดยใช้ MD5 เป็นอัลกอริทึมการเข้ารหัส
ผู้เขียนเลือก SN สำหรับการตรวจสอบในตอนแรก แต่เรียกว่า crypto เพื่อสร้างลายเซ็น MD5 และตรวจสอบต่อไป เขาสามารถใช้ IP Whitelist เป็นการตรวจสอบแทนได้เท่านั้น
2. คิวรี NodeJS
ด้วยอินเทอร์เฟซสำหรับการโทรเราสามารถเขียนสคริปต์ขนาดเล็กเพื่อขอข้อมูล เราต้องการการอ้างอิงสามครั้งคือ Express, Superagent และ EventProxy
Express เป็นเว็บแอปพลิเคชันที่มีน้ำหนักเบา
Superagent เป็นห้องสมุดที่มักใช้โดยซอฟต์แวร์รวบรวมข้อมูลซึ่งสามารถจำลองคำขอต่าง ๆ ได้
EventProxy เป็นคอนโทรลเลอร์พร้อมกัน
* แบบสอบถามง่ายๆ
ก่อนอื่นมาเขียนคำของ่ายๆเพื่อตรวจสอบว่าสามารถรับตำแหน่งทางภูมิศาสตร์ได้หรือไม่:
app.get ('/one', function (req, res, ถัดไป) {var sk = 'Yoursk' // สร้าง sk ของแอปพลิเคชันที่อยู่ = 'Beijing'; superagent.get ('http://api.map.baidu.com/geocoder/v2/') sk}) .end (ฟังก์ชั่น (err, sres) {ถ้า (err) {console.log ('err:' err); return;} res.send (sres.text);})}) จากนั้นเปิดเบราว์เซอร์เพื่อเยี่ยมชม: http://localhost:8888/one
{สถานะ: 0, ผลลัพธ์: {สถานที่: {lng: 116.39564503787867, Lat: 39.92998577808024}, ความแม่นยำ: 0, ความมั่นใจ: 10, ระดับ: "เมือง"}เมื่อคุณเห็นข้อมูลนี้หมายความว่าอินเทอร์เฟซนั้นสำเร็จ หากสถานะไม่ใช่ 0 โปรดดูตารางสถานะรหัสส่งคืน
ทำไมเราต้องเปิดเซิร์ฟเวอร์เพื่อขอ? เนื่องจากแอปพลิเคชันที่เราสร้างขึ้นคือเซิร์ฟเวอร์เราจึงต้องสร้างเซิร์ฟเวอร์เพื่อขอ
* แบบสอบถามแบทช์
โอเคเมืองสามารถสอบถามได้ ต่อไปเราจะดำเนินการสอบถามหลายเมือง เราใช้ EventProxy สำหรับการควบคุมพร้อมกัน คุณสามารถคิดว่ามันเป็นเคาน์เตอร์ คุณสามารถสั่งให้ฟังเหตุการณ์และเรียกใช้ฟังก์ชันที่เกี่ยวข้อง n ครั้ง
รหัสคีย์มีดังนี้:
app.get ('/many', function (req, res, ถัดไป) {var sk = 'Yoursk', ที่อยู่ = ['Beijing', 'Shenzhen', 'Guangzhou', 'Puning']; ep.after ('getLocation', ที่อยู่ superagent.get ('http://api.map.baidu.com/geocoder/v2/') .Query ({ที่อยู่: E}) .QUERY ({เอาท์พุท: 'JSON'}) .QUERY ({AK: SK}) - เปิดเบราว์เซอร์เพื่อเข้าถึง: http://localhost:8888/many
[{ที่อยู่: "Beijing", res: "{" สถานะ ": 0," result ": {" ตำแหน่ง ": {" lng ": 116.39564503787867," lat ": 39.92998577808024}," "เซินเจิ้น", res: "{" สถานะ ": 0," ผลลัพธ์ ": {" ตำแหน่ง ": {" lng ": 114.0259736573215," lat ": 22.546053546205248}," precise ": 0," เมือง ", res:" {"สถานะ": 0, "ผลลัพธ์": {"ตำแหน่ง": {"lng": 113.30764967515182, "lat": 23.12004910207623}, "แม่นยำ": 0, "ความมั่นใจ": 12, " "{" สถานะ ": 0," ผลลัพธ์ ": {" ตำแหน่ง ": {" lng ": 116.07816590835329," lat ": 23.28895358314155}," แม่นยำ ": 0," ความมั่นใจ ": 14," ระดับ ":โอเคไม่มีปัญหากับการสืบค้นแบทช์ ต่อไปเราจะใช้ NodeJS เพื่ออ่านไฟล์ Excel ที่ถูกโยนโดยวิศวกรพื้นหลัง
3. nodejs อ่านและเขียนไฟล์
เวลานี้เราต้องการการพึ่งพาอีกสองครั้งหนึ่งคือโมดูล FS ในตัวสำหรับ NodeJS และหนึ่งคือไลบรารี Node-XLSX สำหรับการอ่านและการเขียน Excel
โยนไฟล์ excel ของเมืองไปยังไดเรกทอรีรากและเริ่มสคริปต์อื่น xls2js.js:
var xlsx = ต้องการ ('node-xlsx'), fs = reghed ('fs'); var file_path = './query_result.xlsx'; var file_data = xlsx.parse (file_path);จากนั้นโทรหา fs.writefile เพื่อเขียนเมืองที่สกัดไปยังรหัสต่อไปนี้:
file_data.foreach (ฟังก์ชั่น (แผ่น, ดัชนี) {var sheetName = sheet.name // ชื่อตาราง, sheetData = sheet.data // ข้อมูลตาราง, sheethead = sheetData [0] // แถวแรกโดยทั่วไปเป็นส่วนหัว './static/address.json', file_data_json, cities_name = []; fs.writefile (file_path_towrite, file_data_json, ฟังก์ชั่น (err) {ถ้า (err) console.log ('ข้อมูลเขียนล้มเหลว', err); else console.log ('เขียนไฟล์สำเร็จ');})})เปิดไฟล์ static/address.json แล้วคุณจะเห็นข้อความในรูปแบบต่อไปนี้:
{"cities_name": ["ปักกิ่ง, ปักกิ่ง", "ปักกิ่ง, เขตเทศบาล", "เทียนจิน, เทียนจิน"]}4. ขั้นตอนที่ครอบคลุม 2 และ 3 เพื่อรับรู้อินเทอร์เฟซที่อ่านไฟล์เมืองในท้องถิ่นแบทช์แบบสอบถามและเขียนไฟล์ใหม่
ตกลงด้วยไฟล์นี้เราสามารถอ่านได้อีกครั้งจากนั้นทำการสืบค้นแบทช์:
app.get ('/', function (req, res, ถัดไป) {var sk = 'yoursk', ที่อยู่ = [], file_path = './static/address.json', file_path_towrite = './static/geocoder.json', file_data; fs.readfile file 'err); [e ['location'] ['lng'], e ['location'] ['lat']];}) fs.writefile (file_path_towrite, json.stringify (file_data), ฟังก์ชั่น (err) {ถ้า (err) console.log })}) ที่อยู่ foreach (ฟังก์ชั่น (e, i) {superagent.get ('http://api.map.baidu.com/geocoder/v2/') .query ({ที่อยู่: E.Split (','). 'JSON'}) .QUERY ({AK: SK}) .END (ฟังก์ชั่น (ERRS, SRES) {ตำแหน่ง var, res_json; res_json = json.parse (sres.text); if (res_json.status == 0) {location = res_json.result && {"lng": 0, "lat": 0};5. ใช้หน้าเว็บซึ่งสามารถป้อนที่ตั้งทางภูมิศาสตร์เพื่อดำเนินการสืบค้นแบทช์ของที่ตั้งทางภูมิศาสตร์
นี่คือสิ่งที่ส่วนหน้าวิธีการเขียนพวกเขา
6. สรุป
ข้างต้นคือเนื้อหาทั้งหมดของการใช้ NodeJS เพื่อใช้การสืบค้นแบบแบทช์ของละติจูดและอินเทอร์เฟซลองจิจูด ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนที่ใช้ nodejs