วันศุกร์ที่ 22 เมษายน พ.ศ. 2554

iPhone: Getting Your Location

Getting Your Location
เรามาศึกษาวิธีหาพิกัดละติจูด ลองจิจูด ณ ตำแหน่งที่เราอยู่กันดีกว่าครับ เพราะมันจะได้นำไปใช้กับงาน AR ของเราด้วย การดึงการตำแหน่งปัจจุบันของเรานั้น ดึงจากตำแหน่ง GPS ของเครื่อง iPhone ครับ โดยจะใช้คลาส CLLocationManager เป็นตัวช่วยในการดึงค่าออกมา ทำอย่างไรนั้นไปดูกัน



ขั้นตอนมีดังต่อไปนี้

1. add existing frameworks -> CoreLocation.framework

2. สร้างตัวแปร CLLocationManager และเซ็ต delegate

ในฟังก์ชั่น ViewDidLoad

[sourcecode langauge="objc"]

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self; //เซ็ต delegate เพื่อรับค่าตำแหน่งปัจจุบัน
locationManager.distanceFilter = kCLDistanceFilterNone; //เซ็ตให้ทำการปรับปรุงตำแหน่งตลอดเมื่อมีการอัพเดทตำแหน่ง
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; //เซ็ตค่าความละเอียดของหน่วยวัดระยะ
[locationManager startUpdatingLocation];//สั่งให้ LocationManager เริ่มการอัพเดทตำแหน่ง

[/sourcecode]

3. ในฟังก์ชั่น delegate.. -(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation  นี้หละเราจะได้รับค่าของ ตำแหน่ง ปัจจุบันของเรามาใช้งาน

[sourcecode langauge="objc"]

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

/*เมื่อถึงเวลาอัพเดทตำแหน่ง โปรแกรมเข้ามาทำงานที่ฟังก์ชั่นนี้ และค่าที่เราใช้ได้
ได้แก่ newLocation คือตำแหน่งอัพเดท oldLocation คือตำแหน่งเก่า
วิธีการใช้งานที่จะดึงค่า ละติจูด ลองจิจูดออกมา
ละติจูดของ new location ใช้คำสั่ง newLocation.coordinate.latitude
ลองจิจูดของ new location ใช้คำสั่ง newLocation.coordinate.longitude
ละติจูดของ old location ใช้คำสั่ง oldLocation.coordinate.latitude
ลองจิจูดของ old location ใช้คำสั่ง oldLocation.coordinate.longitude
*/
}

[/sourcecode]

เพิ่มเติม หากเราอยากจะได้ระยะห่างของตำแหน่งเก่าและตำแหน่งใหม่ ให้ใช้ฟังก์ชั่น distanceFromLocation ดังนี้

[newLocation distanceFromLocation:oldLocation] คือที่ส่งออกมาจะเป็น double

Reference

adaydesign :)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น