Попередній перегляд карти

Як зробити піктограму попереднього перегляду, як-от у додатку "Карта iPhone"?

Скріншот http://img835.imageshack.us/img835/1619/img0016x.png

Для цього є функція?

2
Що ти маєш на увазі? Закруглені кути? Кордон? Карта і контактний?
додано Автор Eimantas, джерело
Дякую всім за вашу допомогу. Я тільки що дізнався, що Apple надає код у своїй вибірці GeocoderDemo від Apple у GeocoderDemo/PlacemarkViewController.m у функції cellForMapView (MKMapView)
додано Автор Thomas T, джерело

2 Відповіді

У 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 виконайте одну з таких дій:

  • Додати живу карту та вимкнути взаємодію.
  • Використовуйте Google Static Maps API (роз'яснено нижче).
  • Створіть MKMapView і перетягніть його на зображення. Я спробував це (див. Попереднє редагування), але не вдалося завантажити плитки. Я намагався закликати потреби вплані та інші методи, але не працював.

Apple's deal with Google is more reliable than a free API, but on the bright side, it is really simple. Documentation is at http://code.google.com/apis/maps/documentation/staticmaps/

This is the minimum amount of parameters for practical use: http://maps.googleapis.com/maps/api/staticmap?center=40.416878,-3.703530&zoom=15&size=290x179&sensor=false

Підсумок параметрів:

  • center: this can be an address, or a latitude,longitude pair with up to 6 decimals (more than 6 are ignored).
  • format: png8 (default), png24, git, jpg, jpg-baseline.
  • language: Use any language. Default will be used if requested wasn't available.
  • maptype: One of the following: roadmap, satellite, hybrid, terrain.
  • scale: 1,2,4. Use 2 to return twice the amount of pixels on retina displays. 4 is restricted to premium customers. Non paid resolution limits are 640x640 for 1 and 2.
  • sensor: true or false. Mandatory. It indicates if the user is being located using a device.
  • size: size in pixels.
  • zoom: 0 (whole planet) to 21.

Є кілька інших, щоб додати багатокутники, спеціальні маркери та створити мапу.

  NSData* data = [NSData dataWithContentsOfURL:@"http://maps.googleap..."];
  UIImage *img = [UIImage imageWithData:data];
4
додано
Смутно, коли я спробував відповісти, карта повернулася з пустими плитками. Я думаю, що деяка налагодження знайде цей трюк, але зараз я дотримуюся порад Метт.
додано Автор Jano, джерело
Дякую! Я помістив його в додатковий вигляд (addSubview) і додав #import
додано Автор Thomas T, джерело
Я все ще використовую код із старої (не відредагованої) відповіді
додано Автор Thomas T, джерело

Ви можете використовувати статичний API Google Maps для створення зображення, а не завантаження цілого UIMapView .

2
додано
IT KPI iOS
IT KPI iOS
74 учасників

Чат обсуждения IOS. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/602

ios_jobs_ua
ios_jobs_ua
27 учасників

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.