Geocoding and Core Location Changes in iOS 8

Geocoding เป็นบริการหนึ่งที่เราสามารถจะหาพิกัดของสถานที่ต่างๆ ได้ หรือสามารถหาที่อยู่ของพิกัดที่เราให้ไปได้ในทางกลับกัน ซึ่งวันนี้เราจะมาลองเล่นกัน และอีกส่วนสำคัญของบทความนี้คือ การเปลี่ยนแปลงของ Core Location บน iOS 8

Core Location บน iOS 8 นั้นจะไม่ขออนุญาติผู้ใช้แบบอัตโนมัติอีกต่อไปแล้ว โดยในส่วนของขออนุญาติจะต้องทำผ่านนักพัฒนาเท่านั้น ก่อนอื่นมารู้จักกันก่อน โดยการขอใช้ Location ของผู้ใช้โทรศัพท์จะแบ่งออกเป็น 2 แบบคือ

  • "When In Use" หรือเป็นการขอตำแหน่งที่อยู่ของผู้ใช้เฉพาะใช้ใน App เท่านั้น
  • "Always" เป็นการขอตำแหน่งแบบตลอดเวลา คล้ายกับที่อยู่ใน iOS รุ่นก่อนๆ และใช้งาน Background ถ้านึกภาพไม่ออก ลองใช้ Google นำทางแล้วกด Home ออกมานะ

โดยขั้นแรกเราต้องไปแก้ไฟล์ Info.plist ก่อน โดยเพิ่ม Key ที่ชื่อว่า "NSLocationWhenInUseUsageDescription" หรือ "NSLocationAlwaysUsageDescription" ขึ้นอยู่กับรูปแบบของการขออนุญาติการใช้งาน โดยประกาศเป็น String และใส่ข้อมูลที่จะให้ขึ้นขณะที่ขออนุญาติเป็น Value ของ Key ตัวนี้


จากนั้นในโค้ดเราก็สั่งให้อนุญาติเข้าถึง Location ของผู้ใช้ App แบบนี้


และเขียน Delegate method ของ Core Location เพื่อตรวจสอบการอนุญาติของผู้ใช้ โดยผมทำการ Update Location ทันทีหลังจากที่ผู้ใช้กดตกลง


เราก็จะสามารถขออนุญาติเข้าถึงตำแหน่งของผู้ใช้ App ได้แล้ว

จากภาพด้านบน ถ้าสังเกตุดีๆ ก็จะเห็น App ที่เราจะทำกันวันนี้เนอะ ผมบอกคร่าวๆ แล้วกัน เรามี UITextField ให้ผู้ใช้ App ใส่ชื่อสถานที่แล้วขอกดที่ปุ่ม Find Location เราก็จะหาพิกัดของสถานที่นั้น (Geocoding) ได้ โดยค่าที่จะเป็นไปได้ในการหาพิกัดก็คือ

  • ชื่อเมือง หรือ Landmark ต่างๆ บนโลก เช่น Bangkok, Empire State Building
  • ชื่อถนน เช่น 1 Infinite Loop
  • ที่อยู่ของสถานที่นั้น ซึ่งอยู่ในรูปแบบ ถนน, เมือง, ประเทศ เช่น 1 Infinite Loop, Cupertino, CA USA
และอีกอย่างก็คือ เราจะทำการขอข้อมูลพื้นที่จากพิกัดปัจจุบัน (Reverse Geocoding)
ขั้นแรกก็ประกาศตัวแปรที่ต้องใช้ซะก่อน (อ่านข้อมูลของ Lazy Instantiation ได้ที่นี่)


จากนั้นการใช้ Geocoding API ก็ตามนี้เลย อันนี้เป็นการที่นำข้อมูลที่ผู้ใช้ใส่ลงใน UITextField มาทำการหาพิกัดของสถานที่


ส่วนที่สองในการหาข้อมูลสถานที่จากพิกัดก็นั้น เราจะทำตอนที่ได้ข้อมูลพิกัดจาก Core Location มาแล้ว



ลองเอาไปเล่นกันดูนะครับ เพื่อได้ใช้ประโยชน์เข้าสักวัน นอกจากนี้ Core Location บน iOS 8 ยังมีฟีเจอร์ที่น่าสนใจอีกอย่างเช่น Indoor Postitioning และ Visit Monitoring ไว้ถ้าได้ศึกษาวิธีการใช้งานแล้วจะมาเขียนให้อ่านกันนะ

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

"อีสุกอีใส" ประสบการณ์เมื่อต้องมาเป็นตอนอายุ 22