คู่มือการเพิ่มประสิทธิภาพ

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

คู่มือนี้อธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพการใช้งาน Google Maps API ในแง่ของความปลอดภัย ประสิทธิภาพ และการบริโภค

ความปลอดภัย

อ่านแนวทางปฏิบัติแนะนําด้านความปลอดภัย

คีย์ API คือข้อมูลเข้าสู่ระบบที่เน้นโปรเจ็กต์ซึ่งต้องใช้ความระมัดระวังเช่นเดียวกับ User-ID และรหัสผ่าน ดูแนวทางปฏิบัติแนะนําด้านความปลอดภัยของ 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 บ่อยเกินไปในช่วงเวลาสั้นๆ เช่น ข้อผิดพลาด QPS ให้พิจารณาใช้ Exponential Backoff เพื่อให้คําขอดําเนินการ

โดยเฉพาะอย่างยิ่ง คุณจะต้องปรับความเร็วของการค้นหา ในโค้ด ให้เพิ่มระยะเวลารอ S วินาทีระหว่างการค้นหา หากการค้นหายังส่งผลให้เกิดข้อผิดพลาด QPS อยู่ ให้ใช้เวลารอ 2 ครั้งแล้วส่งการค้นหาอีกครั้ง ปรับระยะเวลารอต่อไปจนกว่าคําค้นหาจะแสดงผลโดยไม่มีข้อผิดพลาด

การส่งคําขอการโต้ตอบของผู้ใช้ตามคําขอ

คําขอที่ส่งไปยัง API ที่มีการโต้ตอบของผู้ใช้ควรส่งมาตามคําขอเท่านั้น ซึ่งหมายถึงการรอให้ผู้ใช้ปลายทางดําเนินการ (เช่น on-click) เพื่อเริ่มคําขอ API จากนั้นใช้ผลลัพธ์เพื่อโหลดแผนที่ กําหนดปลายทาง หรือแสดงข้อมูลที่เหมาะสม การใช้วิธีการแบบออนดีมานด์จะหลีกเลี่ยงคําขอที่ไม่จําเป็นต่อ API ซึ่งจะลดการใช้ API

หลีกเลี่ยงการแสดงเนื้อหาซ้อนทับเมื่อแผนที่เคลื่อนไหว

หลีกเลี่ยงการใช้ Draw() เพื่อแสดงเนื้อหาโฆษณาซ้อนทับที่กําหนดเองบนแผนที่ ซึ่งผู้ใช้อาจเลื่อนแผนที่ เนื่องจากระบบจะวาดแผนที่ซ้ําทุกครั้งที่ผู้ใช้ย้ายแผนที่ การวางเนื้อหาซ้อนทับบนแผนที่พร้อมกันอาจทําให้เกิดความล่าช้าหรือรูปภาพที่กระตุกได้ เพิ่มหรือนําเนื้อหาซ้อนทับออกจากแผนที่เมื่อผู้ใช้หยุดแพนหรือซูมเท่านั้น

หลีกเลี่ยงการดําเนินการที่เข้มงวดใน Draw วิธี

ตามกฎทั่วไป แนวทางปฏิบัติแนะนําคือหลีกเลี่ยงการดําเนินการที่ไม่เข้มงวดด้านประสิทธิภาพและมีประสิทธิภาพสูงใน Draw() ตัวอย่างเช่น หลีกเลี่ยงการใช้โค้ดต่อไปนี้ในโค้ดเมธอด Draw()

  • คําค้นหาที่ส่งกลับเนื้อหาจํานวนมาก
  • ข้อมูลที่แสดงมีการเปลี่ยนแปลงหลายอย่าง
  • การบิดเบือนองค์ประกอบ Docs Object Model (DOM) จํานวนมาก

การดําเนินการเหล่านี้อาจทําให้ภาพทํางานช้าและทําให้เกิดภาพติดขัดเมื่อภาพแสดงแผนที่

การใช้รูปภาพแรสเตอร์สําหรับเครื่องหมาย

ใช้ภาพแรสเตอร์ เช่น รูปภาพในรูปแบบ .PNG หรือ .JPG เมื่อเพิ่มเครื่องหมายเพื่อระบุสถานที่ตั้งบนแผนที่ หลีกเลี่ยงการใช้รูปภาพกราฟิกเวกเตอร์ที่ปรับขนาดได้ (SVG) เพราะการแสดงผลรูปภาพ SVG อาจทําให้เกิดความล่าช้าเมื่อมีการวาดแผนที่ใหม่

การเพิ่มประสิทธิภาพเครื่องหมาย

การเพิ่มประสิทธิภาพช่วยเพิ่มประสิทธิภาพโดยการแสดงเครื่องหมายจํานวนมากเป็นองค์ประกอบคงที่รายการเดียว ซึ่งเป็นประโยชน์ในกรณีที่จําเป็นต้องมีตัวทําเครื่องหมายจํานวนมาก โดยค่าเริ่มต้น Maps JavaScript API จะตัดสินใจว่าตัวทําเครื่องหมายมีการเพิ่มประสิทธิภาพหรือไม่ เมื่อมีเครื่องหมายจํานวนมาก Maps JavaScript API จะพยายามแสดงผลเครื่องหมายด้วยการเพิ่มประสิทธิภาพ เครื่องหมายบางรายการอาจไม่สามารถเพิ่มประสิทธิภาพได้ ในบางสถานการณ์ Maps JavaScript API อาจต้องแสดงผลเครื่องหมาย โดยไม่เพิ่มประสิทธิภาพ ปิดใช้การแสดงผลแบบเพิ่มประสิทธิภาพสําหรับ GIF หรือ PNG แบบเคลื่อนไหว หรือเมื่อเครื่องหมายแต่ละรายการต้องแสดงผลเป็นองค์ประกอบ DOM แยกกัน

การสร้างคลัสเตอร์เพื่อจัดการการแสดงเครื่องหมาย

ช่วยจัดการคลัสเตอร์ของเครื่องหมายเพื่อระบุสถานที่ตั้งบนแผนที่ สร้างคลัสเตอร์เครื่องหมายโดยใช้ไลบรารี Clerer Clusterer ไลบรารีตัวทําเครื่องหมายเครื่องหมายมีตัวเลือกสําหรับรายการต่อไปนี้

  • ขนาดตารางกริด เพื่อระบุจํานวนเครื่องหมายที่จะรวมเข้าด้วยกันในคลัสเตอร์
  • การซูมสูงสุด เพื่อระบุระดับการซูมสูงสุดที่จะแสดงคลัสเตอร์
  • เส้นทางของรูปภาพ เพื่อให้รูปภาพกราฟิกใช้เป็นไอคอนเครื่องหมาย

การบริโภค

หากต้องการวางแผนงบประมาณและควบคุมค่าใช้จ่ายของคุณ ให้ทําดังนี้

  • ตั้งค่าการแจ้งเตือนงบประมาณ เพื่อติดตามค่าใช้จ่ายที่เพิ่มขึ้นถึงจํานวนที่ต้องการ การตั้งค่างบประมาณจะไม่ครอบคลุมการใช้ API แต่จะแจ้งให้คุณทราบเมื่อค่าใช้จ่ายของคุณใกล้เคียงกับจํานวนที่ระบุเท่านั้น
  • กําหนดปริมาณการใช้ API รายวัน เพื่อจัดการค่าใช้จ่ายสําหรับ API ที่เรียกเก็บเงินได้ คุณสามารถตั้งค่าคําขอต่อวันเพื่อจํากัดค่าใช้จ่ายได้ ใช้สมการง่ายๆ ในการกําหนดงบประมาณรายวันของคุณ ทั้งนี้ขึ้นอยู่กับจํานวนเงินที่คุณต้องการจ่าย (ต้นทุนรายเดือน/ราคาต่อการแสดงผล)/30 = คําขอต่อวันสูงสุด (สําหรับ API หนึ่ง) การใช้งานของคุณอาจใช้ API ที่เรียกเก็บเงินได้หลายรายการ ดังนั้นโปรดปรับสมการตามต้องการ คุณจะได้รับเครดิต Google Maps API มูลค่า$200 USD ในแต่ละเดือน ดังนั้นโปรดนําข้อมูลนี้มาพิจารณาในการคํานวณ
  • ใช้หลายโปรเจ็กต์เพื่อแยก จัดลําดับความสําคัญ และติดตามการใช้งาน ตัวอย่างเช่น สมมติว่าคุณใช้ Google Maps Platform API ในการทดสอบเป็นประจํา ด้วยการสร้างโปรเจ็กต์แยกสําหรับการทดสอบของคุณ โดยใช้โควต้าและคีย์ API ของโปรเจ็กต์เอง คุณสามารถทดสอบได้อย่างทั่วถึงและป้องกันปัญหาที่อาจเกิดขึ้นเกินคาด

การจัดการการบริโภคใน Maps

การใช้แผนที่ 1 รายการต่อหน้าเป็นวิธีที่ดีในการเพิ่มประสิทธิภาพการแสดงแผนที่ เนื่องจากผู้ใช้มักจะโต้ตอบกับแผนที่ทีละรายการเท่านั้น แอปสามารถปรับเปลี่ยนแผนที่เพื่อแสดงชุดข้อมูลที่แตกต่างกันได้ ทั้งนี้ขึ้นอยู่กับการโต้ตอบและความต้องการของลูกค้า

การใช้ภาพนิ่ง

คําขอที่ใช้ภาพแบบไดนามิก (แผนที่แบบไดนามิกและ Street View แบบไดนามิก) มีค่าใช้จ่ายมากกว่า Maps แบบคงที่และ Street View แบบคงที่ หากคุณไม่คาดการณ์การโต้ตอบของผู้ใช้กับแผนที่หรือ Street View (การซูมหรือการเลื่อน) ให้ใช้ API เวอร์ชันคงที่เหล่านี้

ภาพขนาดย่อเป็นแผนที่และภาพถ่ายที่มีขนาดเล็กมาก ซึ่งนับเป็นอีกหนึ่งแผนที่ที่ดีสําหรับแผนที่แบบคงที่และ Street View แบบคงที่ ระบบจะเรียกเก็บเงินรายการเหล่านี้ในอัตราที่ต่ําลงและเมื่อผู้ใช้โต้ตอบ (เมื่อคลิก) และสามารถนําผู้ใช้ไปยังเวอร์ชันแบบไดนามิกเพื่อประสบการณ์การใช้งาน Google Maps เต็มรูปแบบ

การใช้ Maps ฝัง API

คุณสามารถใช้ Maps ฝัง API เพื่อเพิ่มแผนที่ด้วย เครื่องหมายเดียวหรือแผนที่แบบไดนามิกได้โดยไม่มีค่าใช้จ่าย ใช้ Maps Embedded API สําหรับแอปพลิเคชันที่ต้องใช้เครื่องหมายเดียวโดยไม่ต้องกําหนดค่าแผนที่ ระบบจะเรียกเก็บเงินคําขอ API การฝังแผนที่ที่ใช้โหมดเส้นทาง โหมดมุมมอง หรือโหมดการค้นหา (ดูรายละเอียดในตารางราคา)

การใช้ SDK แผนที่บนอุปกรณ์เคลื่อนที่สําหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่

สําหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ให้ใช้ Maps SDK สําหรับ Android หรือ Maps SDK สําหรับ iOS เมื่อแสดงแผนที่ ใช้ Maps Static API หรือ Maps JavaScript API เมื่อข้อกําหนดระบุไว้ โดยใช้ SDK อุปกรณ์เคลื่อนที่

การจัดการการบริโภคในเส้นทาง

การจํากัดจุดอ้างอิงใน Directions API

หากเป็นไปได้ ให้จํากัดรายการของผู้ใช้ในการค้นหาให้มีจุดอ้างอิงไม่เกิน 10 จุด ระบบจะเรียกเก็บเงินคําขอที่มีจุดอ้างอิงมากกว่า 10 จุดในอัตราที่สูงกว่า

การใช้การเพิ่มประสิทธิภาพ 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 Traveled และ Nearest Road รวมอยู่ในระดับขั้นสูงและจะเรียกเก็บในอัตราที่สูงขึ้น ใช้ฟีเจอร์เหล่านี้ที่ไม่มีข้อมูล GPS และ Roads API ช่วยให้ระบุถนนที่ถูกต้องได้ ขีดจํากัดความเร็วซึ่งเป็นอีกฟีเจอร์หนึ่งของ Roads API พร้อมให้บริการสําหรับลูกค้าการติดตามชิ้นงานเท่านั้น

ขีดจํากัดความเร็วการสุ่มตัวอย่างสถานที่ในช่วงเวลา 5 ถึง 15 นาที

หากต้องการลดจํานวนการเรียกใช้บริการขีดจํากัดความเร็ว Maps Mapss API ให้สุ่มตัวอย่างตําแหน่งของชิ้นงานที่ช่วง 5 ถึง 15 นาที ค่าที่แน่นอนขึ้นอยู่กับความเร็วที่เนื้อหากําลังเดินทาง หากเนื้อหาอยู่นิ่งๆ ตัวอย่างสถานที่ตั้งเดียวก็เพียงพอแล้ว คุณไม่จําเป็นต้องโทรหลายครั้ง

หากต้องการลดเวลาในการตอบสนองโดยรวม ให้เรียกใช้บริการขีดจํากัดความเร็วเมื่อคุณรวบรวมข้อมูลได้บางส่วนแทนที่จะเรียกใช้ API ทุกครั้งที่ได้รับตําแหน่งของเนื้อหาในอุปกรณ์เคลื่อนที่

การจัดการการบริโภคใน Places

การเพิ่มประสิทธิภาพการติดตั้งใช้งานการเติมข้อความอัตโนมัติเกี่ยวกับสถานที่

วิธีเพิ่มประสิทธิภาพค่าใช้จ่ายในการใช้การเติมข้อความอัตโนมัติ

  • ใช้มาสก์ของช่องในวิดเจ็ตการเติมข้อความอัตโนมัติ JavaScript, Android และ iOS เพื่อแสดงเฉพาะข้อมูลช่องข้อมูลสถานที่ที่คุณต้องการเท่านั้น

  • ตัวเลือกการเรียกเก็บเงินจะขึ้นอยู่กับกรณีการใช้งานของคุณ คุณจะถูกเรียกเก็บค่าบริการเป็น การเติมข้อความอัตโนมัติ - ตามคําขอ หรือ เติมข้อความอัตโนมัติ - ต่อเซสชัน SKU อย่างใดอย่างหนึ่ง ทั้งนี้ขึ้นอยู่กับการติดตั้งใช้งานของคุณเซสชันเติมข้อความ

สําหรับข้อมูลและคําแนะนําเพิ่มเติมเกี่ยวกับการเลือกตัวเลือกที่เหมาะสมสําหรับกรณีการใช้งานของคุณ โปรดดูที่แนวทางปฏิบัติแนะนําสําหรับการเพิ่มประสิทธิภาพต้นทุนอัตโนมัติในการเติมข้อความอัตโนมัติ

ข้อมูลที่ส่งคืนสําหรับช่องเฉพาะในรายละเอียดสถานที่และคําขอการค้นหาสถานที่

คุณสามารถปรับแต่งรายละเอียดสถานที่และคําขอการค้นหาสถานที่เพื่อแสดงข้อมูลสําหรับช่องเฉพาะที่ใช้ในแอปพลิเคชันได้ ช่องเหล่านี้จะแบ่งออกเป็นหมวดหมู่ต่างๆ ได้แก่ พื้นฐาน รายชื่อติดต่อ และบรรยากาศ คําขอที่ไม่ระบุช่องจะได้รับข้อมูลจากทุกช่อง

การเรียกเก็บเงินสําหรับคําขอรายละเอียดสถานที่จะอิงตามประเภทและปริมาณข้อมูลที่ขอ ระบบจะเรียกเก็บเงินสําหรับคําขอที่ไม่ระบุช่องในราคาเต็ม ดูข้อมูลเพิ่มเติมได้ที่รายละเอียดสถานที่และการค้นหาสถานที่

ลดต้นทุนโดยใช้ Geocoding API

หากแอปพลิเคชันของคุณจัดการกับที่อยู่ที่พิมพ์โดยผู้ใช้ ที่อยู่เหล่านั้นอาจไม่ชัดเจน (ไม่สมบูรณ์ สะกดผิด หรือมีรูปแบบที่ไม่ถูกต้อง) แจกแจงที่อยู่โดยใช้การเติมข้อความอัตโนมัติ จากนั้นใช้รหัสสถานที่เพื่อระบุตําแหน่งสถานที่

อย่างไรก็ตาม หากคุณมีที่อยู่ที่แน่ชัด (หรือใกล้เคียงกับที่อยู่นั้น) คุณสามารถลดค่าใช้จ่ายได้โดยใช้การเข้ารหัสภูมิศาสตร์แทนการใช้การเติมข้อความอัตโนมัติ ดูรายละเอียดเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนําเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์

วิธีการทํางานของโควต้า Google Maps Platform

API ทั้งหมดของเรามีขีดจํากัดเกี่ยวกับจํานวนการโทรที่ลูกค้าสามารถโทรได้ ระบบจะกําหนดค่าโควต้าเหล่านี้ต่อนาที เมื่อโทรครบโควต้าใน API ที่ระบุไว้เมื่อครบ 1 นาทีแล้ว เราจะไม่ยอมรับการโทรในอนาคตจนกว่าจะถึงนาทีถัดไป

เฉพาะคําขอที่สําเร็จและคําขอที่ก่อให้เกิดข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เท่านั้นที่จะนับรวมในโควต้า คําขอที่ไม่ผ่านการตรวจสอบสิทธิ์จะไม่นับรวมในโควต้า

Maps API หลายรายการมีการบังคับใช้ต่อวินาที นอกเหนือจากการบังคับใช้โควต้าต่อนาที การบังคับใช้ต่อวินาทีนี้ไม่สามารถรับประกันว่าจะมีการใช้งานแบบเดียวกันตลอดทั้งนาที และจะไม่ขัดขวางการใช้งานถึงขีดจํากัดโควต้าสําหรับนาทีนั้นๆ ซึ่งป้องกันไม่ให้คุณใช้โควต้าทั้งหมดในช่วง 1 หรือ 2 นาทีแรกของนาทีที่กําหนด และป้องกันไม่ให้คุณหยุดชะงักบริการในกรณีที่การใช้งานพุ่งสูงขึ้นกะทันหัน เพื่อรับมือกับความแตกต่างในการบังคับใช้เหล่านี้ ให้วางแผนการใช้โควต้าและข้อกําหนดโดยใช้ค่าเฉลี่ยของ QPM ใน QPS ต่างๆ

GMP API ที่มีการบังคับใช้ต่อวินาทีนี้คือ Directions API, DISTANCE Matrix API, Elevation API, Geocoding API, Places API และ Roads API

ประมาณค่าใช้จ่ายสําหรับผลิตภัณฑ์ GMP API ทั้งหมดโดยอิงตามปริมาณคําขอทั้งหมดของคุณ