1

AR Toolkit を使用していますが、うまく機能しているか、iPhone に問題があるかわかりません。

ポイントを見つけようとすると、右側にラベルが表示されます。その場所を指すことはありません。同じ問題がありますか?

つまり、iPhone の画面で指さそうとする場所を見たときです。その場所とそのラベルが右側に表示されます。

コンパスに問題があるのか​​、それともツールキットがうまく機能しないのかわかりません。

どんな手掛かり?

4

1 に答える 1

1

リンクを参照して方向性を計算しました。

2 つの CLLocationCoordinate2D 間の方位を計算する

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,poiLat -このコンテキストの位置から radCurrLatPoi,radCurrLonPoi -このコンテキストの位置へ

これはいくつかの点でうまく機能しますが、この特定のシナリオでは一致しません

私の現在の場所: 18.551861,73.942108

私の興味のあるポイント: 73.943202,18.552456 73.943693,18.552754 73.943275,18.552687

これは私が 360 度のアングルを完成させたせいかもしれません...

于 2012-06-19T09:40:39.107 に答える