คู่มือนี้จะอธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพ Google Maps API ด้านความปลอดภัย ประสิทธิภาพ และการบริโภค
ความปลอดภัย
การตรวจสอบแนวทางปฏิบัติแนะนำด้านความปลอดภัย
คีย์ API เป็นข้อมูลเข้าสู่ระบบที่เน้นโปรเจ็กต์เป็นศูนย์กลางซึ่งควรมีข้อควรระวังแบบเดียวกัน เป็นรหัสผู้ใช้และรหัสผ่าน ตรวจสอบ แนวทางปฏิบัติแนะนำด้านความปลอดภัยของ API เพื่อรักษาความปลอดภัยคีย์จาก การใช้งานโดยไม่ได้ตั้งใจซึ่งอาจทำให้เกิดการใช้โควต้าเกินความจำเป็นและการเรียกเก็บเงินที่ไม่คาดคิด ลงในบัญชีของคุณ
การใช้คีย์ API เพื่อเข้าถึง Maps API
คีย์ API เป็นวิธีการตรวจสอบสิทธิ์ที่แนะนำให้ใช้ในการเข้าถึง Google Maps API API แม้ว่าจะยังรองรับการใช้รหัสไคลเอ็นต์อยู่ แต่คีย์ API รองรับการควบคุมความปลอดภัยอย่างละเอียดและสามารถปรับแต่งให้ทำงานร่วมกับ ที่อยู่เว็บ, ที่อยู่ IP และ SDK อุปกรณ์เคลื่อนที่ (Android และ iOS) สำหรับข้อมูล เกี่ยวกับการสร้างและรักษาความปลอดภัยของคีย์ API ให้ไปที่ "การใช้คีย์ API" สำหรับแต่ละรายการ API หรือ SDK (ตัวอย่างเช่น สำหรับ Maps JavaScript API โปรดไปที่ ในหน้าการใช้คีย์ API)
ประสิทธิภาพ
ใช้ Exponential Backoff เพื่อจัดการข้อผิดพลาด
หากแอปพบข้อผิดพลาดจากการพยายามเรียกใช้ API หลายครั้งเกินไป ในช่วงเวลาสั้นๆ เช่น ข้อผิดพลาดเกี่ยวกับโควต้า โปรดพิจารณาใช้ Exponential Backoff เพื่อให้คำขอประมวลผลได้
Backoff แบบทวีคูณมีประโยชน์มากที่สุดสำหรับข้อผิดพลาดในช่วง 500 วินาที สำหรับข้อมูลเพิ่มเติม ดูการจัดการรหัสสถานะการคืนสินค้า HTTP
โดยเฉพาะอย่างยิ่ง ให้ปรับความเร็วในการค้นหา ในโค้ด ให้เพิ่ม
ระยะเวลารอ S
วินาทีระหว่างคำค้นหาแต่ละครั้ง หากการค้นหายังคงให้ผลลัพธ์
ในข้อผิดพลาดเกี่ยวกับโควต้า ให้เพิ่มระยะเวลาการรอ 2 เท่าแล้วจึงส่งข้อความค้นหาอีกครั้ง ดำเนินการต่อ
การปรับระยะเวลาการรอจนกว่าการค้นหาจะแสดงผลโดยไม่มีข้อผิดพลาด
การส่งคำขอการโต้ตอบของผู้ใช้ตามคำขอ
ควรส่งคำขอไปยัง API ที่มีการโต้ตอบของผู้ใช้ตามคำขอเท่านั้น
ซึ่งหมายถึงกำลังรอให้ผู้ใช้ปลายทางดำเนินการ (เช่น on-click
)
เพื่อเริ่มต้นคำขอ API จากนั้นใช้ผลลัพธ์เพื่อโหลดแผนที่
ปลายทาง หรือแสดงข้อมูลที่เหมาะสม การใช้วิธีออนดีมานด์
หลีกเลี่ยงคำขอที่ไม่จำเป็นไปยัง API ซึ่งช่วยลดการใช้ API
การหลีกเลี่ยงการแสดงเนื้อหาซ้อนทับเมื่อแผนที่เคลื่อนที่
หลีกเลี่ยงการใช้ Draw()
เพื่อแสดงเนื้อหาซ้อนทับที่กำหนดเองบนแผนที่ที่เดิม
เวลาที่ผู้ใช้อาจเลื่อนแผนที่ เนื่องจากจะมีการวาดแผนที่ใหม่ทุกครั้ง
ผู้ใช้เลื่อนแผนที่ การวางเนื้อหาซ้อนทับบนแผนที่ในเวลาเดียวกันสามารถ
อาจจะมีความล่าช้าหรือภาพกระตุก เพิ่มหรือนำเนื้อหาซ้อนทับออกจาก
เมื่อผู้ใช้หยุดเลื่อนหรือซูม
หลีกเลี่ยงการดำเนินการแบบหนักใน Draw
วิธี
ตามกฎทั่วไปแล้ว เป็นแนวทางปฏิบัติที่ดีที่จะหลีกเลี่ยงการทำงานที่เน้นประสิทธิภาพมากเกินไป
การดำเนินการที่ไม่ใช่การวาดในเมธอด Draw()
ตัวอย่างเช่น ให้หลีกเลี่ยง
ต่อไปนี้ในรหัสเมธอด Draw()
ของคุณ
- การค้นหาที่แสดงเนื้อหาจำนวนมาก
- ข้อมูลที่แสดงมีการเปลี่ยนแปลงหลายอย่าง
- การควบคุมองค์ประกอบ Document Object Model (DOM) หลายรายการ
การดำเนินการเหล่านี้อาจชะลอประสิทธิภาพและทำให้เกิดการล่าช้าหรือการทำงานติดขัด เมื่อแผนที่แสดงผล
การใช้ภาพแรสเตอร์เป็นเครื่องหมาย
ใช้รูปภาพแรสเตอร์ เช่น รูปภาพในรูปแบบ .PNG หรือ .JPG เมื่อเพิ่ม เครื่องหมายเพื่อระบุตำแหน่งบนแผนที่ หลีกเลี่ยงการใช้เวกเตอร์ที่รองรับการปรับขนาด รูปภาพกราฟิก (SVG) เนื่องจากการแสดงผลรูปภาพ SVG อาจมีความล่าช้าเมื่อ แผนที่จะถูกวาดใหม่
เครื่องหมายการเพิ่มประสิทธิภาพ
การเพิ่มประสิทธิภาพช่วยเพิ่มประสิทธิภาพโดยการแสดงเครื่องหมายต่างๆ เป็นแบบคงที่ ซึ่งจะมีประโยชน์ในกรณีที่ต้องใช้เครื่องหมายจำนวนมาก โดยค่าเริ่มต้น Maps JavaScript API จะกำหนดว่าเครื่องหมาย จะได้รับการเพิ่มประสิทธิภาพ เมื่อมีเครื่องหมายจำนวนมาก ฟังก์ชัน Maps JavaScript API จะพยายามแสดงผลตัวทำเครื่องหมายด้วย การเพิ่มประสิทธิภาพ เครื่องหมายบางรายการอาจไม่สามารถเพิ่มประสิทธิภาพได้ ในบางกรณี Maps JavaScript API อาจต้องแสดงผลเครื่องหมายโดยไม่มี การเพิ่มประสิทธิภาพ ปิดใช้การแสดงภาพที่เพิ่มประสิทธิภาพสำหรับ GIF หรือ PNG แบบเคลื่อนไหว หรือเมื่อ เครื่องหมายแต่ละตัวจะต้องแสดงผลเป็นองค์ประกอบ DOM แยกกัน
การสร้างคลัสเตอร์เพื่อจัดการการแสดงเครื่องหมาย
หากต้องการช่วยจัดการการแสดงเครื่องหมายเพื่อระบุตำแหน่งบนแผนที่ สร้างคลัสเตอร์เครื่องหมายโดยใช้ ไลบรารี Marker Clusterer ไลบรารีตัวคลัสเตอร์ของตัวทำเครื่องหมายมีตัวเลือกต่อไปนี้
- ขนาดตารางกริด เพื่อระบุจํานวนเครื่องหมายที่จะจัดกลุ่มไว้ด้วยกัน ในคลัสเตอร์
- กำลังขยายสูงสุด เพื่อระบุระดับการซูมสูงสุด เพื่อแสดงคลัสเตอร์
- เส้นทางของรูปภาพ สำหรับรูปภาพกราฟิกที่จะใช้เป็นไอคอนตัวทำเครื่องหมาย
การรับชม
หากต้องการวางแผนงบประมาณและควบคุมค่าใช้จ่าย ให้ทำดังนี้
- ตั้งค่าการแจ้งเตือนงบประมาณ
เพื่อติดตามว่าค่าใช้จ่ายของคุณเพิ่มขึ้นอย่างไรในจำนวนเงินหนึ่งๆ การกำหนดงบประมาณ
ไม่จํากัดการใช้งาน API แต่จะแจ้งเตือนคุณเมื่อต้นทุนของคุณเข้าใกล้
จำนวนที่ระบุ
- จำกัดการใช้งาน API รายวัน เพื่อจัดการค่าใช้จ่ายสำหรับ API ที่เรียกเก็บเงินได้ ตามการตั้งค่าความถี่สูงสุดใน คำขอต่อ คุณจะจำกัดค่าใช้จ่ายได้ ใช้สมการง่ายๆ ในการคำนวณค่ารายวันของคุณ ทั้งนี้ขึ้นอยู่กับจำนวนเงินที่คุณต้องการจ่าย: (รายเดือน ต้นทุน/ราคาต่อชิ้น )/30 = คำขอสูงสุดต่อวัน (สำหรับ API 1 รายการ) การใช้งานเฉพาะของคุณอาจ ใช้ API ที่เรียกเก็บเงินได้หลายรายการ ดังนั้นให้ปรับสมการตามที่จำเป็น ต เครดิต Google Maps API มูลค่า 200 USD พร้อมให้ใช้งานในแต่ละเดือน คุณควรคำนึงถึงปัจจัยนี้ในการคำนวณด้วย
- ใช้หลายโปรเจ็กต์เพื่อแยก จัดลำดับความสำคัญ และติดตามการใช้งาน ตัวอย่างเช่น สมมติว่าคุณใช้ Google Maps Platform API เป็นประจำใน การทดสอบ สร้างโปรเจ็กต์แยกต่างหากสําหรับการทดสอบ โดยมีโควต้าของตนเองและ คีย์ API - คุณสามารถทดสอบอย่างละเอียดพร้อมทั้งป้องกันปัญหาที่ไม่คาดคิด ใช้จ่ายเงินมากเกินไป
การจัดการการบริโภคใน Maps
การใช้แผนที่เดียวต่อหน้าเป็นวิธีที่ดีในการเพิ่มประสิทธิภาพการแสดงแผนที่ เนื่องจาก ผู้ใช้มักจะโต้ตอบกับแผนที่ครั้งละ 1 ฉบับเท่านั้น แอปของคุณจัดการได้ แผนที่เพื่อแสดงชุดข้อมูลต่างๆ กัน ขึ้นอยู่กับการโต้ตอบของลูกค้า และความต้องการ
การใช้ภาพนิ่ง
คำขอที่ใช้ภาพแบบไดนามิก (แผนที่แบบไดนามิกและ Street View แบบไดนามิก) มากกว่าแผนที่แบบคงที่และ Street View แบบคงที่ หากไม่คาดการณ์ผู้ใช้ การโต้ตอบกับแผนที่หรือ Street View (การซูมหรือเลื่อน) ให้ใช้ ของ API เหล่านี้
ภาพขนาดย่อ - แผนที่และรูปภาพขนาดเล็กมาก - เป็นการใช้งานที่ดีอีกอย่างหนึ่งสำหรับภาพนิ่ง Maps และ Street View แบบคงที่ ระบบจะเรียกเก็บเงินสินค้าเหล่านี้ในอัตราที่ต่ำลงและเมื่อ การโต้ตอบของผู้ใช้ (เมื่อคลิก) และสามารถนำผู้ใช้ไปยังเวอร์ชันแบบไดนามิก ประสบการณ์การใช้งาน Google Maps
การใช้ Maps Embed API
คุณสามารถใช้ Maps Embed API เพื่อเพิ่มแผนที่ด้วย เครื่องหมายเดียว หรือแผนที่แบบไดนามิก โดยไม่เสียค่าใช้จ่าย ใช้เมนู API แบบฝังสำหรับแอปพลิเคชันแผนที่ เครื่องหมายและไม่ต้องมีการปรับแต่งแผนที่ คําขอ Maps Embed API โดยใช้โหมดเส้นทาง ระบบจะเรียกเก็บเงินจากโหมดดูหรือโหมดการค้นหา (โปรดดู ตารางการกำหนดราคา เพื่อดูรายละเอียด)
การใช้ SDK ของแผนที่บนอุปกรณ์เคลื่อนที่สำหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่
สำหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ให้ใช้ Maps SDK สำหรับ Android หรือ Maps SDK สำหรับ iOS เมื่อแสดงแผนที่ ใช้ Maps Static API หรือ Maps JavaScript API เมื่อข้อกำหนดออกมา ที่ใช้ SDK อุปกรณ์เคลื่อนที่
จัดการการบริโภคใน Routes
การจำกัดจุดอ้างอิงของ Directions API
หากเป็นไปได้ ให้จำกัดรายการผู้ใช้ในการค้นหาไม่เกิน 10 จุดอ้างอิง ระบบจะเรียกเก็บเงินจากคำขอที่มีจุดอ้างอิงมากกว่า 10 รายการในอัตราที่สูงกว่า
การใช้การเพิ่มประสิทธิภาพ Directions API เพื่อการกำหนดเส้นทางที่ดีที่สุด
ระบบจะเรียกเก็บเงินคำขอที่ใช้อาร์กิวเมนต์การเพิ่มประสิทธิภาพจุดอ้างอิงในอัตราที่สูงกว่า ดูข้อมูลเพิ่มเติมได้ที่เพิ่มประสิทธิภาพจุดอ้างอิง
อาร์กิวเมนต์การเพิ่มประสิทธิภาพจะจัดเรียงจุดอ้างอิง เพื่อให้แน่ใจว่าการกำหนดเส้นทางที่ดีที่สุด ซึ่งหมายความว่าการเดินทางจากจุด A ไปยัง E จะเป็นประสบการณ์ที่ดีกว่าเมื่อเพิ่มประสิทธิภาพ (A-B-C-D-E) เทียบกับลำดับแบบสุ่มของเส้นทางที่ไม่ได้เพิ่มประสิทธิภาพ (เช่น A-D-B-C-E)
การใช้โมเดลการจราจรแบบเรียลไทม์ใน Directions API และ Distance Matrix API
Directions API และ Distance Matrix API
ระบบจะเรียกเก็บเงินคำขอที่มีรูปแบบการเข้าชมแบบเรียลไทม์ในอัตราที่สูงขึ้น
เปิดใช้โมเดลการจราจรแบบเรียลไทม์ได้โดยตั้งค่าเวลาออกเดินทางเป็น now
หากละเว้นโมเดลการเข้าชมจากคำขอ ผลลัพธ์จะอิงตาม ที่ปัจจัยทางกายภาพเท่านั้น ได้แก่ ถนน ระยะทาง และขีดจำกัดความเร็ว
การใช้เส้นทางการเดินทางและ ถนนที่ใกล้ที่สุดเมื่อข้อมูล GPS ไม่แม่นยำ
ฟีเจอร์ของ Maps Roads API, Route Travel และ ถนนที่ใกล้ที่สุด รวมอยู่ในชั้นขั้นสูง และมีการเรียกเก็บเงินสำหรับ ใช้ฟีเจอร์เหล่านี้เมื่อข้อมูล GPS ไม่ถูกต้องและ Roads API ช่วยระบุถนนที่ถูกต้องได้ แบบสปีด ขีดจำกัด อีกฟีเจอร์หนึ่งของ Roads API คือ ใช้ได้กับลูกค้าการติดตามเนื้อหาเท่านั้น
การสุ่มตัวอย่างตำแหน่งที่จำกัดความเร็วสูงสุดทุกๆ 5-15 นาที
เพื่อลดปริมาณการเรียกไปยัง Maps Roads API บริการจำกัดความเร็ว ลองสุ่มตำแหน่งของชิ้นงานในเวลา 5-15 นาที เป็นรอบ ค่าที่แน่นอนจะขึ้นอยู่กับความเร็วในการแสดงชิ้นงาน ระหว่างเดินทาง หากชิ้นงานหยุดนิ่ง ตัวอย่างสถานที่เดียวจะเป็น เพียงพอ โดยไม่จำเป็นต้องโทรหลายครั้ง
หากต้องการลดเวลาในการตอบสนองโดยรวม โปรดเรียกใช้บริการจำกัดความเร็วเมื่อคุณ ได้รวบรวมข้อมูลบางอย่าง แทนที่จะเรียกใช้ API ทุกครั้ง ตำแหน่งของเนื้อหาบนอุปกรณ์เคลื่อนที่
การจัดการการบริโภคใน Places
การเพิ่มประสิทธิภาพการใช้การเติมข้อความอัตโนมัติในสถานที่
เพิ่มความคุ้มค่าในการใช้การเติมข้อความอัตโนมัติในสถานที่ต่างๆ ดังนี้
ใช้มาสก์ฟิลด์ในวิดเจ็ตการเติมข้อความอัตโนมัติใน JavaScript, Android และ iOS เพื่อแสดงผลเฉพาะช่องข้อมูลสถานที่ที่คุณต้องการ
ตัวเลือกการเรียกเก็บเงินจะขึ้นอยู่กับกรณีการใช้งานของคุณ เราจะเรียกเก็บเงินจาก SKU ประเภทเติมข้อความอัตโนมัติ - ต่อคำขอ หรือ SKU แบบเติมข้อความอัตโนมัติ - ต่อเซสชัน ทั้งนี้ขึ้นอยู่กับว่าการติดตั้งใช้งานของคุณใช้เซสชันการเติมข้อความอัตโนมัติหรือไม่
ดูข้อมูลเพิ่มเติมและคำแนะนำเกี่ยวกับการเลือกตัวเลือกที่เหมาะกับกรณีการใช้งานของคุณได้ที่แนวทางปฏิบัติแนะนำในการเพิ่มประสิทธิภาพต้นทุนของการเติมข้อความอัตโนมัติ
การแสดงผลข้อมูลสำหรับช่องใดช่องหนึ่งในรายละเอียดสถานที่และคำขอค้นหาสถานที่
คุณสามารถปรับแต่งรายละเอียดสถานที่และคำขอการค้นหาสถานที่เพื่อแสดงข้อมูล ช่องข้อมูลเฉพาะที่ใช้ในแอปพลิเคชัน ช่องเหล่านี้แบ่งออกเป็น หมวดหมู่: พื้นฐาน ข้อมูลติดต่อ และบรรยากาศ คำขอที่ไม่ ระบุว่าช่องใดจะได้รับข้อมูลสำหรับทุกช่อง
การเรียกเก็บเงินสำหรับคำขอรายละเอียดสถานที่จะอิงตามประเภทและจำนวนเงิน จากข้อมูลที่ขอ ระบบจะเรียกเก็บเงินสำหรับคำขอที่ไม่ได้ระบุช่องใดๆ ในอัตราเต็ม สำหรับข้อมูลเพิ่มเติม โปรดดู รายละเอียดสถานที่ และ การค้นหาสถานที่
ลดต้นทุนโดยใช้ Geocoding API
หากแอปพลิเคชันของคุณจัดการที่อยู่ที่ผู้ใช้พิมพ์ ที่อยู่จะเป็น บางครั้งไม่ชัดเจน (ไม่สมบูรณ์ สะกดผิด หรือรูปแบบไม่ดี) ชี้แจงที่อยู่โดยใช้การเติมข้อความอัตโนมัติ แล้วใช้รหัสสถานที่ เพื่อดูตำแหน่งสถานที่
แต่ถ้าคุณมีที่อยู่ที่ถูกต้อง (หรืออยู่ใกล้) คุณสามารถลด ด้วยการใช้การระบุพิกัดทางภูมิศาสตร์แทนการเติมข้อความอัตโนมัติ สำหรับรายละเอียดเพิ่มเติม ดูแนวทางปฏิบัติแนะนำสำหรับการระบุพิกัดทางภูมิศาสตร์
โควต้าของ Google Maps Platform ทำงานอย่างไร
API ทั้งหมดของเราจำกัดจำนวนการเรียกที่ลูกค้าแต่ละรายทำได้ เหล่านี้ โควต้าจะได้รับการกำหนดค่าต่อนาที เมื่อคุณใช้จำนวนถึงโควต้า การเรียก API หนึ่งๆ ใน 1 นาที การโทรในอนาคตจะไม่ได้รับการยอมรับจนกว่าจะถึงเวลาถัดไป นาที
เฉพาะคำขอที่สำเร็จและคำขอที่ทำให้เกิดข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เท่านั้นที่จะนับรวม โควต้า คำขอที่ไม่ผ่านการตรวจสอบสิทธิ์จะไม่นับรวมในโควต้า
ประมาณค่าใช้จ่ายสำหรับผลิตภัณฑ์ GMP API ใดๆ ตามปริมาณคำขอทั้งหมด