2012-06-05 39 views
6

Tôi biết cách tìm tiêu đề/từ tính đúng cho vị trí điện thoại của tôi hiện đang ở, nhưng có thể tìm độ lệch/độ lệch từ cho một vị trí ở xa không?CLLocation - Tìm từ/độ lệch từ tại vị trí khác

Điều tôi muốn làm là có thể thả ghim vào một vị trí trên bản đồ và tìm cả vòng bi thực và vòng bi với phương sai từ tính từ điểm đó.

Cảm ơn!

+0

Một trong những ý tưởng của tôi là viết nó vào tài sản vị trí của CLLocation, nhưng điều đó đã trở thành chỉ đọc, vì vậy đó là ra ngoài cửa sổ. –

Trả lời

4

Bạn đã giải quyết chưa? Nếu không, bạn có thể tính góc phương vị của vị trí từ xa. Thứ nhất với từ phía bắc từ tính và sau đó với nhóm phía bắc thực sự. Cuối cùng, bạn trừ hai để có được độ lệch từ.

Dưới đây là làm thế nào để tính toán một góc phương vị cho một vị trí từ xa:

-(float)azimuthFromLocations:(CLLocationCoordinate2D)first toCoordinate:(CLLocationCoordinate2D)second{ 
float longitudeDifference = second.longitude - first.longitude; 
float latitudeDifference = second.latitude - first.latitude; 
float possibleAzimuth = (M_PI * .5f) - atan(latitudeDifference/longitudeDifference); 

if (longitudeDifference > 0) 
    return possibleAzimuth; 
else if (longitudeDifference < 0) 
    return possibleAzimuth + M_PI; 
else if (latitudeDifference < 0) 
    return M_PI; 

return 0.0f; 
} 
+0

Cảm ơn, giải pháp cuối cùng đã trở nên phức tạp hơn một chút. Tôi đã phải sử dụng mô hình từ tính thế giới để tìm ra độ lệch cho một tọa độ nhất định. –

+0

* biến thể. Độ lệch nằm trong cảm biến. –

+0

Giải pháp này chỉ là (xấp xỉ) đúng gần đường xích đạo. Khi bạn đến gần cực, góc phương vị phải dựa trên khoảng cách chứ không phải tọa độ vĩ độ/vĩ độ. – MikeMayer67

3

Mã này để tính toán này phải tồn tại trong một khuôn khổ đâu đó kể từ khi nó được sử dụng bởi CLHeading khi dịch vụ định vị có sẵn.

Nếu bất kỳ ai cũng có thể tìm thấy mã đó hoặc có Mục tiêu C để đăng mô hình từ trường thế giới, nó sẽ được đánh giá cao.

CẬP NHẬT: Tôi đã tìm thấy một trình bao bọc iOS mã nguồn mở tuyệt vời! Cảm ơn Crookneck! https://github.com/stephent/ObjectiveWMM

cài đặt đơn giản như một git submodule

run this command: 
$git submodule add https://github.com/stephent/ObjectiveWMM.git ObjectiveWMM 

Add these files to your Xcode project: 
CCMagneticDeclination.h 
CCMagneticDeclination.m 
CCMagneticModel.h 
CCMagneticModel.m 
NSDate+DecimalYear.h 
NSDate+DecimalYear.m 
WMM/EGM9615.h 
WMM/GeomagnetismHeader.h 
WMM/GeomagnetismLibrary.c 
WMM/WMM.COF 
0

tôi cần cùng một giải pháp trong Swift, dựa trên Magnetic mẫu Thế giới.

Đây là triển khai thực hiện của tôi: https://github.com/kanchudeep/Geomagnetism-Swift

Đó là một lớp học duy nhất đơn giản mà có thể được thả vào bất kỳ dự án và sử dụng.

Các vấn đề liên quan