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

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

คู่มือนี้อธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพการใช้งาน 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 เพื่อให้คําขอดําเนินการ

Exponential Backoff มีประโยชน์มากที่สุดสําหรับข้อผิดพลาดในช่วง 500 ดูข้อมูลเพิ่มเติมที่หัวข้อการจัดการรหัสสถานะการแสดงผล HTTP

โดยเฉพาะอย่างยิ่ง ให้ปรับความเร็วในการค้นหา ในโค้ด ให้เพิ่มระยะเวลารอ 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 Maps API อาจจําเป็นต้องแสดงผลตัวทําเครื่องหมายโดยไม่มีการเพิ่มประสิทธิภาพ ปิดใช้การแสดงผลแบบเพิ่มประสิทธิภาพสําหรับ GIF หรือ PNG แบบเคลื่อนไหว หรือเมื่อต้องแสดงผลเครื่องหมายแต่ละรายการเป็นองค์ประกอบ DOM แยกต่างหาก

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

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

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

การบริโภค

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

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

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

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

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

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

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

การใช้ Maps Embedded API

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

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

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

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

การจํากัดจุดอ้างอิง API เส้นทาง

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

การใช้การเพิ่มประสิทธิภาพ Directions API เพื่อการกําหนดเส้นทางที่ดีที่สุด

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

อาร์กิวเมนต์การเพิ่มประสิทธิภาพจะจัดเรียงจุดอ้างอิงเพื่อให้มั่นใจถึงการกําหนดเส้นทางที่ดีที่สุด ซึ่งหมายความว่าการเดินทางจาก A ไปยัง E จะเป็นประสบการณ์ที่ดีกว่าเมื่อเพิ่มประสิทธิภาพ (A-B-C-D-E) กับลําดับแบบสุ่มของเส้นทางที่ไม่ได้เพิ่มประสิทธิภาพ (เช่น A-D-B-C-E)

การใช้รูปแบบการเข้าชมแบบเรียลไทม์ใน Directions API และ ระยะทางเมทริกซ์ API

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

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

ใช้เส้นทางที่เดินทางและถนนที่ใกล้ที่สุดเมื่อข้อมูล GPS ไม่แน่นอน

ฟีเจอร์ Maps Roads API, Route Traveled และ Nearest Road รวมอยู่ในระดับขั้นสูงและจะเรียกเก็บเงินในอัตราที่สูงขึ้น ใช้ฟีเจอร์เหล่านี้เพื่อให้ข้อมูล GPS ไม่แม่นยําและ Roads API จะช่วยระบุถนนที่ถูกต้องได้ ขีดจํากัดความเร็ว ซึ่งเป็นอีกฟีเจอร์หนึ่งของ Roads API มีให้บริการเฉพาะลูกค้าการติดตามชิ้นงานเท่านั้น

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GMP API ที่มีการบังคับใช้ต่อวินาทีนี้คือ Directions API, ระยะทางเมทริกซ์, Elevation API, Geoเขียนโค้ด API, Places API และ Roads API

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