2

Mapbox iOS SDK (2.1.2) を使用しており、マップビューのスナップショットを作成したいと考えています。iOS SDK の 1.xx バージョンを使用してこれが可能な場所を確認できますが、現在の API にはメソッドがありません。Mapbox Github リポジトリを検索しましたが、何も表示されませんでした。また、サポートページにメッセージをドロップしましたが、返事がありません.

API に適切なメソッドがまだ存在しない場合、誰かが回避策を提案できますか? または、機能を自分で追加する際にどこから始めるかを誰かが提案できますか?

4

2 に答える 2

8

更新された回答: Mapbox Maps SDK for iOS 3.7.0+ includes MGLMapSnapshotter, これにより、マップ ビューなしでラスター化されたマップが取得されます —基本的な実装については、この例を参照してください。

後世のために、古い答えは以下に保持されています...


スナップショット方式はMGLMapViewまだありませんが、予定されています。

それまでの間、これらはベース マップとマップ UI を含むマップ ビュー (およびそのマップ ビューのみ) のコンテンツを取得します。

Objective-C :

- (UIImage *)snapshot:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0);
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
    UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return snapshot;
}

スウィフト

func snapshot(view: UIView) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
    view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
    let snapshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return snapshot
}

地図のスナップショット

于 2016-03-01T16:57:36.117 に答える
0

Mapbox API でメソッドを探す代わりに、独自の実装を記述してマップビューのコンテンツをキャプチャできます。これを試すことができます。

-(UIImage*)mapToImage{
    UIGraphicsBeginImageContext(mapView.bounds.size);
    [mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return mapImage;
}
于 2015-11-03T17:33:29.233 に答える