Предварительный просмотр карты - PullRequest
2 голосов
/ 27 октября 2011

Как сделать значок предварительного просмотра, как в приложении iPhone Map?

Снимок экрана http://img835.imageshack.us/img835/1619/img0016x.png

Есть ли функция для этого?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

В iOS 7 используйте MKMap Snapshotter. От NSHipster :

MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.region = self.mapView.region;
options.size = self.mapView.frame.size;
options.scale = [[UIScreen mainScreen] scale];

NSURL *fileURL = [NSURL fileURLWithPath:@"path/to/snapshot.png"];

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    if (error) {
        NSLog(@"[Error] %@", error);
        return;
    }

    UIImage *image = snapshot.image;
    NSData *data = UIImagePNGRepresentation(image);
    [data writeToURL:fileURL atomically:YES];
}];

Перед iOS7 выполните одно из следующих действий:

  • Добавить живую карту и отключить взаимодействие.
  • Используйте API статических карт Google (см. Ниже).
  • Создайте MKMapView и визуализируйте его в изображение. Я попробовал это (см. Предыдущее редактирование), но не смог загрузить плитки. Я пробовал вызывать needsLayout и другие методы, но не работал.

Сделка Apple с Google более надежна, чем бесплатный API, но, с другой стороны, она действительно проста. Документация на http://code.google.com/apis/maps/documentation/staticmaps/

Это минимальное количество параметров для практического использования: http://maps.googleapis.com/maps/api/staticmap?center=40.416878,-3.703530&zoom=15&size=290x179&sensor=false

Сводка параметров:

  • center: это может быть пара адресов или широты и долготы с числом знаков до 6 (больше 6 игнорируется).
  • format: png8 (по умолчанию), png24, git, jpg, jpg-baseline.
  • language: используйте любой язык. По умолчанию будет использоваться, если запрошенный не был доступен.
  • maptype: Одно из следующих: дорожная карта, спутник, гибрид, местность.
  • scale: 1,2,4. Используйте 2, чтобы вернуть удвоенное количество пикселей на дисплеях сетчатки. 4 ограничено для премиум-клиентов. Неоплачиваемое разрешение составляет 640х640 для 1 и 2.
  • sensor: истина или ложь. Обязательный. Указывает, находится ли пользователь с помощью устройства.
  • size: размер в пикселях.
  • zoom: от 0 (целая планета) до 21.

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

  NSData* data = [NSData dataWithContentsOfURL:@"http://maps.googleap..."];
  UIImage *img = [UIImage imageWithData:data];
2 голосов
/ 05 ноября 2011

Вы можете использовать Статический API Карт Google для создания изображения вместо загрузки всего UIMapView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...