2011-10-11 111 views
1

我正在使用AR Toolkit,但我不确定它是否工作正常,或者我的iPhone有问题。iPhone AR工具包或指南针给出的方向不正确

当我尝试找到一个点时,我在右侧看到它的标签。它永远不会指向那个位置。你有同样的问题吗?

换句话说,当我在iPhone的屏幕上看到我想指向的地方。我看到那个地方和它的标签在右边。

我不确定我的指南针是否有问题,或者工具包无法正常工作。

任何线索?

回答

1

我已经修改了我的计算,方向参考链接

Calculating bearing between two CLLocationCoordinate2Ds

double poiLon = coordinate.coordinateGeoLocation.coordinate.longitude; 
double poiLat = coordinate.coordinateGeoLocation.coordinate.latitude; 
double a = poiLon - self.currentLocation.coordinate.longitude; 
double b = poiLat - self.currentLocation.coordinate.latitude; 

poiLon=degreesToRadians(coordinate.coordinateGeoLocation.coordinate.longitude); 
poiLat=degreesToRadians(coordinate.coordinateGeoLocation.coordinate.latitude); 
double radCurrLatPoi=degreesToRadians(self.currentLocation.coordinate.latitude); 
double radCurrLonPoi=degreesToRadians(self.currentLocation.coordinate.longitude); 

a=sin(poiLon-radCurrLonPoi)*cos(poiLat); 
b=cos(radCurrLatPoi)*sin(poiLat)-sin(radCurrLatPoi)*cos(poiLat)*cos(poiLon-radCurrLonPoi); 

//sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng) 
double alpha = 180.0 * atan2(a, b)/M_PI; 

if (alpha < 0.0) 
    alpha += 360.0; 
else if (alpha > 360.0) 
    alpha -= 360.0; 

CLLocationDirection theHeading = self.currentHeading.trueHeading; 
double deltaOrient = alpha - theHeading; 
CGFloat X = 320.0/2.0 + (deltaOrient * 320.0f/30.0);//x position 

注: poiLon,在这种情况下 radCurrLatPoi poiLat - 从位置,radCurrLonPoi,要在这方面定位

这适用于几点,它不匹配在这种特定情况下

我现在的位置: 18.551861,73.942108

我的兴趣点: 73.943202,18.552456 73.943693,18.552754 73.943275,18.552687

我想这可能是因为我完成了360角...任何建议

+0

尝试检查CLLocation.horizo​​ntalAccuracy。也许这个值太大了。 – VansFannel