บันทึกการพัฒนา / RideMeter-Simple GPS Computer
บันทึกการพัฒนา RideMeter: คอมพิวเตอร์ปั่นจักรยาน GPS อย่างง่าย
ตั้งแต่การออกไปเที่ยวด้วยจักรยานแบบพับได้ไปจนถึงคอมพิวเตอร์สำหรับปั่นจักรยานบนโทรศัพท์: การหยุดอัตโนมัติของ RideMeter การบันทึกการปั่น การนำทาง MapKit และความท้าทายในการแปลงพิกัด
นี่เป็นความพยายามครั้งแรกของฉันในแอป iOS หลังจากค้นพบการเข้ารหัสแบบ Vibe งานเขียนโปรแกรมก่อนหน้านี้ของฉันเกิดขึ้นก่อนการเดินทางรอบประเทศจีนเมื่อกว่าหนึ่งปีก่อนหน้านี้ ในตอนนั้น ฉันเขียนสิ่งที่ฉันต้องการในการทำงานเป็นหลัก ซึ่งมักจะเป็นสคริปต์ผู้ใช้และส่วนขยายของ Chrome
สคริปต์ผู้ใช้คืออะไร
Userscript คือโปรแกรมขนาดเล็กที่ทำงานในเบราว์เซอร์ของคุณเพื่อแก้ไขหรือปรับปรุงหน้าเว็บที่มีอยู่ คล้ายกับส่วนขยายของเบราว์เซอร์ แต่โดยทั่วไปจะเบากว่า โดยแต่ละสคริปต์จะจัดการกับปัญหาเฉพาะประการหนึ่ง Userscript สามารถลบโฆษณา ปรับเค้าโครงหน้า เพิ่มปุ่มดาวน์โหลด กรอกแบบฟอร์ม หรือแม้แต่มอบคุณลักษณะของเว็บไซต์ที่ไม่เคยมีมาก่อน ชื่อเล่นภาษาจีน “Youhou” มักจะหมายถึงส่วนขยายเบราว์เซอร์ Tampermonkey ติดตั้ง Tampermonkey จากนั้นติดตั้งสคริปต์ และสคริปต์จะทำงานโดยอัตโนมัติเมื่อคุณเยี่ยมชมเว็บไซต์ที่เกี่ยวข้อง กล่าวอีกนัยหนึ่ง เว็บไซต์จัดเตรียมหน้าต้นฉบับ และสคริปต์ผู้ใช้จะปรับหน้าดังกล่าวภายในเบราว์เซอร์ของคุณ
ความคิดมาจากไหน
กลับไปที่แอป iOS แรกของฉัน:
หลังจากกลับมาที่หางโจวจากการเที่ยวรอบประเทศจีน ฉันกับหยางก็ไปปั่นจักรยานเป็นครั้งคราว ฉันขายจักรยานเสือหมอบที่ฉันสร้างในราคา 15,000 หยวน และซื้อจักรยานพับสไตล์บรอมป์ตันที่ผลิตในจีนให้กับ Yang เมื่อใช้ร่วมกับจักรยานพับ Dahon ของฉัน ทั้งสองคันจะพอดีกับท้ายรถได้ง่าย ดังนั้นเราจึงสามารถเดินทางไปไหนมาไหนได้อย่างนุ่มนวล ก่อนหน้านั้น ฉันเป็นนักปั่นจักรยานประเภทหนึ่งที่ต้องการรักษาความเร็ว 30 กม./ชม. แม้จะอยู่ระหว่างการเดินทาง และรู้สึกเหมือนหลงทางโดยไม่มีคอมพิวเตอร์สำหรับปั่นจักรยาน ฉันยังจ่ายเงินให้ Strava ซึ่งแพงมากด้วยซ้ำ
ผู้ขับขี่อย่างฉันมักจะมีคอมพิวเตอร์สำหรับจักรยานบนจักรยาน ซึ่งบางครั้งก็แยกไว้สำหรับจักรยานแต่ละคัน แต่มันไม่ได้อยู่กับคุณเสมอไป บางทีคุณอาจกำลังขี่จักรยานร่วมกับผู้อื่น หรือเพียงแค่ทิ้งคอมพิวเตอร์ไว้ที่บ้าน ฉันนำของฉันกลับบ้านเพื่อชาร์จและมักจะถอดออกเมื่อจอดรถเพื่อไม่ให้ถูกขโมย ในช่วงเวลานั้น โทรศัพท์ก็เข้ามาแทนที่ได้

คอมพิวเตอร์สำหรับปั่นจักรยานแตกต่างจากแอปนำทางทั่วไปหลายประการที่สำคัญ:
การนำทางควรใช้เส้นทางจักรยาน อาแมปก็ทำได้เช่นกัน
ตัวจับเวลาควรหยุดชั่วคราวเมื่อคุณหยุด แอพนำทางส่วนใหญ่ไม่ทำเช่นนี้ และนักขี่ทั่วไปอาจไม่ต้องการมัน แต่มันสำคัญสำหรับการฝึกซ้อมและการแข่งขันขี่ หากนับเวลาที่อยู่กับที่ มันจะลากความเร็วเฉลี่ยของคุณลง และทำให้ยากต่อการประเมินว่าคุณขี่ส่วนนั้นอย่างไร
เกณฑ์ความเร็วสำหรับการบันทึกควรปรับได้ เช่น เริ่มนับเกิน 5 กม./ชม. หรือ 10 กม./ชม. บางคนไล่ตามสถิติที่น่าประทับใจของ Strava ซึ่งกำหนดเกณฑ์ที่สูงกว่ามากที่ 15 หรือ 20 กม./ชม. ด้วยขีดจำกัดที่ 15 กม./ชม. ช่วงที่ขับช้าและเวลาที่สัญญาณไฟจราจรไม่ทำให้ประสิทธิภาพที่บันทึกไว้ลดลง
ขอแนะนำ RideMeter

โครงการฝึกซ้อมของฉันจึงเป็นคอมพิวเตอร์ปั่นจักรยานที่เรียบง่ายอย่างยิ่ง อินเทอร์เฟซสีเข้มมีจุดมุ่งหมายเพื่อใช้พลังงานน้อยที่สุดเท่าที่จะทำได้บนหน้าจอ OLED ในขณะที่สีดำและสีเหลืองบ่งบอกถึงความเร็วและการเคลื่อนไหว
รายการคุณสมบัติสั้น: การนำทาง; ความเร็วจริง ความเร็วเฉลี่ย ระยะทาง และเวลาขี่; และการแชร์ข้อมูลการเดินทาง การบันทึกเส้นทางและการแสดงข้อมูลยังทำงานได้โดยไม่ต้องมีการนำทางในโหมดล่องเรือ รูปแบบธุรกิจนั้นเรียบง่ายพอๆ กัน นั่นคือโฆษณา AdMob และการซื้อครั้งเดียวเพื่อลบออก
ฉันต้องการให้แอปเล็กๆ นี้ใช้งานได้ทั่วโลกโดยไม่ต้องเพิ่มค่าบริการส่วนเพิ่มสำหรับผู้ใช้แต่ละคน นั่นคือเหตุผลที่ฉันเลือก MapKit ของ Apple แทนที่จะเป็น API การนำทางของจีนหรือ Google Maps นี่คือข้อดีของบริษัทระดับโลกอย่างแท้จริงอย่าง Apple: สามารถจัดการกับโครงสร้างพื้นฐานระหว่างประเทศที่ยากลำบาก และฉันสามารถบูรณาการเข้ากับแนวทางที่ตรงไปตรงมาได้
หลุมพรางของการพัฒนา
ปัญหาที่ใหญ่ที่สุดคือการแปลงพิกัดแผนที่ หากคุณไม่เคยสร้างแอปแผนที่ คุณอาจไม่รู้ว่าแผนที่ในจีนแผ่นดินใหญ่มักใช้ระบบพิกัดอื่น “ละติจูดและลองจิจูด” ไม่ได้หมายถึงระบบอ้างอิงเดียวกันเสมอไป โดยปกติ GPS จะให้พิกัด WGS-84 ภายใต้กฎระเบียบท้องถิ่นและข้อกำหนดการทำแผนที่ แผนที่อินเทอร์เน็ตของจีนมักใช้พิกัดที่แปลงแล้ว โดย Amap และ Tencent ใช้ GCJ-02 เป็นหลัก ซึ่งมักมีชื่อเล่นว่า "พิกัดดาวอังคาร" และ Baidu เพิ่มการแปลง BD-09 พล็อตพิกัด GPS แบบดิบบนแผนที่เหล่านั้น และผลลัพธ์ที่ได้อาจอยู่ห่างออกไปหลายร้อยเมตร
หลังจากสร้างการสาธิตแล้ว Yang และฉันได้ขี่รถหลายครั้งเพื่อทดสอบ และตำแหน่งการนำทางก็ผิดในแต่ละครั้ง จากนั้นฉันก็จำปัญหาที่คล้ายกันได้จากการทำงานกับ Aipinche ผลิตภัณฑ์ร่วมเดินทางในปี 2015 ฉันตรวจสอบกับ GPT ซึ่งยืนยันปัญหาการแปลง WGS-84 ⇄ GCJ-02 ฉันขอให้ Codex เพิ่มการแปลงพิกัด และออฟเซ็ตก็หายไป