خطوات التنفيذ
1. واجهة الاستعلام
هناك عدد غير قليل من الواجهات من هذا النوع على الموقع. وجد المؤلف مباشرة واجهة خرائط Baidu للقيام بذلك. واجهة برمجة التطبيقات هي خدمة الترميز الجغرافي في واجهة برمجة التطبيقات الجغرافية.
اطلب مثال: استعلام Geocode Baidu Building في بكين
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 كتحقق بدلاً من ذلك.
2. استعلام Nodejs
مع واجهة للاتصال ، يمكننا كتابة نص صغير لطلب البيانات. نحن بحاجة إلى ثلاثة تبعيات ، وهي Express و SuperAgent و EventProxy
Express هو تطبيق ويب خفيف الوزن
SuperAgent هي مكتبة تستخدمها الزحفون غالبًا ، والتي يمكنها محاكاة الطلبات المختلفة.
EventProxy هي وحدة تحكم متزامنة
* استعلام بسيط
أولاً ، دعنا نكتب طلبًا بسيطًا لاكتشاف ما إذا كان يمكن الحصول على الموقع الجغرافي:
app.get ('/One' ، function (req ، res ، next) {var sk = 'your your your yoursk' // إنشاء application sk ، address = 'beijing' ؛ superagent.get ('http://api.map.baidu.com/geocoder/v2/'). query ({addrate}). sk}) .end (function (err ، sres) {if (err) {console.log ('err:' ، err) ؛ return ؛} res.send (sres.text) ؛})}) ثم افتح المتصفح لزيارة: http://localhost:8888/one
{الحالة: 0 ، النتيجة: {الموقع: {lng: 116.3956450378767 ، LAT: 39.92998577808024} ، الدقة: 0 ، الثقة: 10 ، المستوى: "المدينة"}عندما تتمكن من رؤية هذه المعلومات ، فهذا يعني أن الواجهة ناجحة. إذا لم تكن الحالة 0 ، يرجى الرجوع إلى جدول حالة رمز الإرجاع
لماذا نحتاج إلى فتح خادم لطلبه؟ لأن التطبيق الذي أنشأناه هو خادم ، نحتاج إلى إنشاء خادم لطلبه.
* استعلام الدُفعات
حسنًا ، يمكن الاستعلام عن المدينة. بعد ذلك سنقوم بإجراء الاستعلام عن مدن متعددة. نستخدم EventProxy للتحكم في التزامن. يمكنك التفكير في الأمر كعداد. يمكنك قيادة ذلك للاستماع لحدث وتنفيذ الوظيفة المقابلة n مرات.
رمز المفتاح كما يلي:
app.get ('/اثنين' ، الدالة (req ، res ، next) {var sk = 'your yoursk' ، عناوين = ['beijing' ، 'Shenzhen' ، 'Guangzhou' ، 'Puning'] ؛ superagent.get ('http://api.map.baidu.com/geocoder/v2/') .query ({العنوان: e}) .query ({output: 'json'}). })})}) افتح المتصفح للوصول: http://localhost:8888/many
[{العنوان: "beijing" ، الدقة: "{" الحالة ": 0 ،" النتيجة ": {" الموقع ": {" lng ": 116.39564503787867 ، "Shenzhen" ، Res: "{" الحالة ": 0 ،" النتيجة ": {" الموقع ": {" lng ": 114.0259736573215 ،" lat " City "، Res:" {"status": 0 ، "result": {"location": {"lng": 113.30764967515182 ، "{" الحالة ": 0 ،" النتيجة ": {" الموقع ": {" lng ": 116.07816590835329 ،" lat ": 23.28895358314155} ،" الدقة: 0 ، "الثقة"حسنًا ، لا توجد مشكلة في استعلام الدُفعات. بعد ذلك ، سوف نستخدم NodeJS لقراءة ملف Excel الذي ألقاه مهندس الخلفية.
3. Nodejs قراءة وكتابة الملفات
هذه المرة نحتاج إلى اثنين من التبعيات ، واحدة هي وحدة FS مدمجة لـ NodeJs ، وواحدة هي مكتبة Node-Xlsx لقراءة وكتابة Excel
رمي ملف Excel للمدينة إلى دليل الجذر وابدأ برنامج Script XLS2JS.JS:
var xlsx = require ('node-xlsx') ، fs = require ('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 // data table ، sheethead = sheetdata [0] // الصف الأول هو عموما رأسًا ، ولكن ليس هناك sheetdody = sheetdata.slice file_data_json ، cities_name = [] file_data_json ، function (err) {if (err) console.log ("كتابة البيانات" ، err) ؛افتح ملف static/address.json وسترى نصًا بالتنسيق التالي:
{"cities_name": ["Beijing ، Beijing" ، "Beijing ، Municipal District" ، "Tianjin ، Tianjin"}4. الخطوتين الشاملة 2 و 3 لتحقيق واجهة تقرأ ملفات المدينة المحلية ، مجموعات من الاستعلامات ، وتكتب ملفات جديدة
حسنًا ، مع هذا الملف ، يمكننا قراءته مرة أخرى ثم إجراء استعلام دفعة:
app.get ('/' ، function (req ، res ، next) {var sk = 'your your yoursk' ، addes = [] ، file_path = './static/address.json' ، file_path_towrite = './static/geocoder.json' ، file_data ؛ ملف '، err) ؛ [e ['location'] ['lng'] ، e ['location'] ['lat']] ؛ })}) عناوين. foreach (الدالة (e ، i) {superagent.get ('http://api.map.baidu.com/geocoder/v2/') .query ({address: e.split ('،'). 'json'}) .query ({Ak: sk}) .end (function (err ، sres) {var location ، res_json ؛ res_json = json.parse (sres.text) ؛ if (res_json.status == 0) {location = res_json {"lng": 0 ، "LAT": 0} ؛5. تنفيذ صفحة ويب ، والتي يمكنها إدخال الموقع الجغرافي لإجراء استعلام الدُفعات للموقع الجغرافي.
هذه هي الأشياء الأمامية ، وكيفية كتابتها إذا كنت تبدو جيدة
6. ملخص
ما سبق هو كل محتوى استخدام NodeJs لتنفيذ استعلام الدُفعات من واجهات خطوط الطول والطول. آمل أن يكون مفيدًا لكل شخص يستخدم NodeJS.