Отображение определенного местоположения с помощью UIMapKit

#iphone #objective-c #xcode #mapkit

#iPhone #objective-c #xcode #mapkit

Вопрос:

У меня есть приложение для iPhone с несколькими представлениями, каждое представление представляло часть мира. Когда мой пользователь нажимает кнопку, чтобы перейти к этому представлению, я хочу показать карту с предустановленным местоположением … т. Е. когда я нажимаю, чтобы перейти в Нью-Йорк, отображается карта Нью-Йорка

Возможно ли это сделать? Укажите координаты широты и долготы? или каким-либо другим методом?

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

 -(IBAction)getLocation {
    creteMapView.showsUserLocation = YES;
}

-(IBAction)setMap:(id)sender {

    switch (((UISegmentedControl *)sender).selectedSegmentIndex)
    {
        case 0:
        {
            creteMapView.mapType = MKMapTypeStandard;
            break;
        }
        case 1:
        {
            creteMapView.mapType = MKMapTypeSatellite;
            break;
        }
        case 2:
        {
            creteMapView.mapType = MKMapTypeHybrid;
            break;
        }
    }
}
  

Все это работает отлично, но вместо текущего местоположения я хочу просто установить уже определенное. Есть идеи?

Спасибо

Ответ №1:

добавьте класс, который реализует протокол MKAnnotation, например: http://trac.ilesansfil.org/browser/branches/ilesansfil_iphone_app/STABLE_1.3/Models/LocationAnnotation.h

http://trac.ilesansfil.org/browser/branches/ilesansfil_iphone_app/STABLE_1.3/Models/LocationAnnotation.m

импортируйте файл заголовка и попробуйте

 CLLocationCoordinate2D coordinate1;
    coordinate1.longitude = 3.35;
    coordinate1.latitude = 44.85;
    LocationAnnotation *loc1 = [[LocationAnnotation alloc] initWithCoordinate:coordinate1];
    [creteMapView addAnnotation:loc1];
  

это добавит PIN-код к вашей карте

Вы также можете удалить местоположение пользователя, если хотите, с помощью :

 creteMapView.showsUserLocation = NO;
  

Комментарии:

1. Привет, кто-нибудь, спасибо за ответ. Я получаю список ошибок с этим — использование необъявленных идентификаторов для LocationAnnotation и loc1

2. извините, я забыл добавить класс LocationAnnotation, я отредактировал сообщение, Вы можете увидеть ссылки на реализацию этого класса

Ответ №2:

Используйте setRegion в вашем MKMapView. Для этого нужен MKCoordinateRegion, который вы создаете с помощью MKCoordinateRegionMake с центральной координатой (широта, длина) и размахом (охватываемая область). Вы можете получить широту и долготу из API, такого как Google Maps, но для этого потребуется полное руководство.

Комментарии:

1. вы также можете установить центр, что сохранит масштаб без изменений, просто переместите прямоугольник.

2. верно, тогда вам не нужно заботиться о части ‘span’