ห้องสมุดนี้เป็นการรีแฟกเตอร์ของเวอร์ชันก่อนหน้าที่เผยแพร่ไปยัง @google/maps ขณะนี้กำลังเผยแพร่ไปที่ @googlemaps/google-maps-services-js
ใช้ Node.js เหรอ? ต้องการระบุพิกัดทางภูมิศาสตร์บางอย่างหรือไม่? กำลังมองหาเส้นทาง? ไลบรารีนี้นำ Google Maps API Web Services มาสู่แอปพลิเคชัน Node.js ของคุณ
ไคลเอ็นต์ Node.js สำหรับบริการ Google Maps คือไลบรารีไคลเอ็นต์ Node.js สำหรับ Google Maps API ต่อไปนี้:
โปรดทราบว่าข้อกำหนดและเงื่อนไขเดียวกันนี้ใช้กับการใช้งาน API เมื่อเข้าถึงผ่านไลบรารีนี้
ไลบรารีนี้ออกแบบมาสำหรับแอปพลิเคชัน Node.js ฝั่งเซิร์ฟเวอร์ การพยายามใช้ฝั่งไคลเอ็นต์ในเบราว์เซอร์หรือสภาพแวดล้อมอื่นๆ เช่น React Native อาจใช้งานได้ในบางกรณี แต่ส่วนใหญ่จะไม่ได้ผล โปรดอย่ารายงานปัญหาเกี่ยวกับสภาพแวดล้อมเหล่านี้เมื่อพยายามใช้งาน เนื่องจาก แอปพลิเคชัน Node.js ฝั่งเซิร์ฟเวอร์เป็นสภาพแวดล้อมเดียวที่ได้รับการสนับสนุนสำหรับไลบรารีนี้ สำหรับสภาพแวดล้อมอื่นๆ ให้ลองใช้ Maps JavaScript API ซึ่งมีชุดคุณลักษณะที่เทียบเคียงได้ และมีจุดประสงค์เพื่อใช้กับ JavaScript ฝั่งไคลเอ็นต์อย่างชัดเจน
$ npm install @googlemaps/google-maps-services-js
ด้านล่างนี้เป็นตัวอย่างง่ายๆ ที่เรียกวิธีการยกระดับในคลาสไคลเอนต์
นำเข้าไคลเอ็นต์ Google Maps โดยใช้ TypeScript และโมดูล ES6:
import { Client } from "@googlemaps/google-maps-services-js" ;
หรือใช้ JavaScript โดยไม่รองรับโมดูล ES6:
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
ตอนนี้สร้างอินสแตนซ์ไคลเอนต์เพื่อทำการเรียกไปยังหนึ่งใน API
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY ,
} ,
timeout : 1000 , // milliseconds
} )
. then ( ( r ) => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( ( e ) => {
console . log ( e . response . data . error_message ) ;
} ) ;
สามารถดูเอกสารอ้างอิงที่สร้างขึ้นได้ที่นี่ ประเภท TypeScript เป็นเอกสารที่เชื่อถือได้สำหรับไลบรารีนี้ และอาจแตกต่างจากคำอธิบายเล็กน้อย
เพื่อที่จะดำเนินการทดสอบแบบ end-to-end คุณจะต้องระบุคีย์ API ของคุณผ่านตัวแปรสภาพแวดล้อม
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
ในส่วนนี้กล่าวถึงการย้ายจาก @google/maps ไปยัง @googlemaps/google-maps-services-js และความแตกต่างระหว่างทั้งสอง
หมายเหตุ : ไลบรารีทั้งสองไม่ได้ใช้วิธีการหรืออินเทอร์เฟซร่วมกัน
ความแตกต่างหลักคือ @google/maps
เปิดเผยวิธีการสาธารณะที่รับพารามิเตอร์แต่ละตัวเป็นอาร์กิวเมนต์ ในขณะที่ @googlemaps/google-maps-services-js
เปิดเผยวิธีการที่ใช้ params
, headers
, body
, instance
(ดู Axios) ซึ่งช่วยให้สามารถเข้าถึงเลเยอร์การขนส่งได้โดยตรงโดยไม่มีความซับซ้อนที่มีอยู่ในไลบรารีเก่า ด้านล่างนี้คือสองตัวอย่าง
@google/maps
): const googleMapsClient = require ( '@google/maps' ) . createClient ( {
key : 'your API key here'
} ) ;
googleMapsClient
. elevation ( {
locations : { lat : 45 , lng : - 110 }
} )
. asPromise ( )
. then ( function ( r ) {
console . log ( r . json . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
@googlemaps/google-maps-services-js
): const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY
} ,
timeout : 1000 // milliseconds
} , axiosInstance )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
ความแตกต่างหลักอยู่ในตารางต่อไปนี้
เก่า | ใหม่ |
---|---|
สามารถจัดเตรียมพารามิเตอร์ได้ | สามารถจัดเตรียมพารามิเตอร์ ส่วนหัว อินสแตนซ์ การหมดเวลา (ดูการกำหนดค่าคำขอ Axios) |
คีย์ API กำหนดค่าที่ไคลเอ็นต์ | คีย์ API กำหนดค่าต่อวิธีในวัตถุ params |
รองรับการลองอีกครั้ง | การลองอีกครั้งสามารถกำหนดค่าได้ผ่าน axios-retry หรือ retry-axios |
ไม่ใช้คำสัญญาเป็นค่าเริ่มต้น | คำสัญญาเป็นค่าเริ่มต้น |
การพิมพ์อยู่ใน @types/googlemaps | รวมการพิมพ์แล้ว |
ไม่สนับสนุนให้มีชีวิตอยู่ | รองรับการมีชีวิตอยู่ |
ไม่รองรับเครื่องดักฟัง | รองรับเครื่องดักฟัง |
ไม่รองรับการยกเลิก | รองรับการยกเลิก |
การตรวจสอบสิทธิ์ผ่านรหัสไคลเอ็นต์และความลับในการลงนาม URL มีไว้เพื่อรองรับแอปพลิเคชันเดิมที่ใช้แผนพรีเมียมของแพลตฟอร์ม Google Maps แผนพรีเมียมของแพลตฟอร์ม Google Maps ไม่มีให้บริการสำหรับการลงชื่อสมัครใช้หรือลูกค้าใหม่อีกต่อไป แอปพลิเคชันใหม่ทั้งหมดต้องใช้คีย์ API
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
client_id : process . env . GOOGLE_MAPS_CLIENT_ID ,
client_secret : process . env . GOOGLE_MAPS_CLIENT_SECRET
} ,
timeout : 1000 // milliseconds
} )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e . response . data . error_message ) ;
} ) ;
ห้องสมุดนี้ได้รับการสนับสนุนโดยชุมชน เราพอใจกับความเสถียรและฟีเจอร์ของไลบรารีที่เราต้องการให้คุณสร้างแอปพลิเคชันที่ใช้งานจริงบนไลบรารีนั้นเพียงพอแล้ว เราจะพยายามสนับสนุนพื้นผิวสาธารณะของไลบรารีผ่าน Stack Overflow และรักษาความเข้ากันได้แบบย้อนหลังในอนาคต อย่างไรก็ตาม แม้ว่าไลบรารีจะเป็นเวอร์ชัน 0.x เราขอสงวนสิทธิ์ในการทำการเปลี่ยนแปลงที่เข้ากันไม่ได้แบบย้อนหลัง หากเราลบฟังก์ชันการทำงานบางอย่างออก (โดยทั่วไปเนื่องจากมีฟังก์ชันที่ดีกว่าอยู่แล้ว หรือหากฟีเจอร์ดังกล่าวพิสูจน์แล้วว่าเป็นไปไม่ได้) ความตั้งใจของเราคือการเลิกใช้งานและให้เวลานักพัฒนาหนึ่งปีในการอัปเดตโค้ดของพวกเขา
หากคุณพบจุดบกพร่อง หรือมีข้อเสนอแนะเกี่ยวกับคุณสมบัติ โปรดบันทึกปัญหา หากคุณต้องการมีส่วนร่วม โปรดอ่านวิธีการมีส่วนร่วม