AR для iOS: показать, где находится местоположение (широта, долгота) на экране - PullRequest
0 голосов
/ 07 августа 2011

Я хочу создать приложение, которое показывает, где находится место на экране.

Я собираюсь показать поверх изображения камеры текст, указывающий, смотрит ли пользователь на него. Например, если пользователь ищет город, который находится к северу от его местоположения, он увидит текст, указывающий его, когда он смотрит на север.

Я также хочу показать расстояние между пользователем и местоположением.

Зная местоположение пользователя, я должен показать, что пользователь ищет другое местоположение. Например, я в Нью-Йорке и хочу знать, где находится Статуя Свободы. Я должен знать его широту и долготу, чтобы отобразить их на экране, когда пользователь смотрит.

Есть ли какой-нибудь SDK для этого?

Вам нужно больше деталей? Извините, но я не очень хорошо говорю по-английски.

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

Шаги должны быть:

  1. Получите lat и long и установите для них две метки, self.label1 и self.label2

  2. Создание пустого представления с фоном прозрачного цвета.

  3. Добавьте ярлыки с помощью addSubview: к представлению на шаге 2.

  4. Установите для CameraOverlayView вид, созданный на шаге 2.

  5. Представьте свой сборщик.

В коде:

Определите в своем .h: CLLocationManager *locationManager и внедрите делегат: <CLLocationManagerDelegate>

- (void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; //How often do you want to update your location, this sets every small change should fire an update.
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}

Затем реализовать:

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

  NSString *lat = [NSString stringWithFormat:@"%d", newLocation.coordinate.latitude];
  self.label1.text = lat;

  NSString *long = [NSString stringWithFormat:@"%d", newLocation.coordinate.longitude];
  self.label2.text = long;
}

Тогда, где вы хотите представить свою камеру с координатами:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];

picker.delegate = self;

picker.sourceType =  UIImagePickerControllerSourceTypeCamera;

emptyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //This frame will make it fullscreen...

emptyView.backgroundColor = [UIColor transparentColor];
[emptyView setAlpha:1.0]; //I think it is not necessary,  but it wont hurt to add this line.

self.label1.frame = CGRectMake(100, 100, self.label1.frame.size.width, self.label1.frame.size.height); //Here you can specify the position in this case 100x 100y of your label1 preserving the width and height.
[emptyView addSubview:self.label1];
//Repeat for self.label2

    self.picker.cameraOverlayView = emptyView; //Which by the way is not empty any more..
    [emptyView release];
    [self presentModalViewController:self.picker animated:YES];
    [self.picker release];

Надеюсь, это достаточно ясно и что ничего не пропало, так как я не проверял это.

0 голосов
/ 15 августа 2011
  1. получите вашу позицию, как предложил Николас.
  2. Получите направление, на которое смотрит пользователь, с компаса
  3. Получите местоположение вашей точки интереса
  4. Вычислите относительный «заголовок» точки интереса, основываясь на вашей координате и точке интереса.
  5. Если он находится вокруг заголовка пользователя, отобразите на экране табличку с информацией оit.

Другим решением было бы создать мир в opnengl и поместить ваши достопримечательности в ваш мир OpenGL, преобразовав их значения широты / долготы в ваши координаты OpenGL.

Первый вариант намного проще, я думаю, второй вариант более гибкий.

...