ドキュメント / セットアップ / iOS / HERE
HERE セットアップ
HERE SDK を MapConductor から使う手順です。Access Key ID と Secret の 2 つで初期化します。
PACKAGE
ios-for-here
API KEY
Key ID + Secret
MIN iOS
16.0
VIEW
HereMapView
前提
Xcode 15 以上
HERE Platform のアカウント
HERE SDK のアクセスキー ID とシークレット
デプロイターゲット iOS 16.0 以上
STEP 01
認証情報を取得する
- HERE Platform にアクセスします。
- プロジェクトを作成するか、既存のものを選びます。
- HERE SDK 用のアクセスキーを作成します。
- アクセスキー ID とシークレットをコピーします。
STEP 02
Swift Package Manager で追加する
Xcode の File > Add Package Dependencies からパッケージ URL を入力します。ネイティブ SDK は依存関係として自動的に入るので、別途追加する必要はありません。
Package URLSwift Package Manager
https://github.com/MapConductor/ios-for-here
Package.swiftSwift
dependencies: [
.package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.1.4"),
.package(url: "https://github.com/MapConductor/ios-for-here", from: "1.0.0"),
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "MapConductorCore", package: "ios-sdk-core"),
.product(name: "MapConductorForHERE", package: "ios-for-here"),
]
),
]STEP 03
SDK を初期化する
地図ビューが作られる前に initializeHERE(accessKeyId:accessKeySecret:) を一度だけ呼びます。この関数は throw するので、失敗を握りつぶさないでください。
MyApp.swiftSwift
import SwiftUI
import MapConductorForHERE
@main
struct MyApp: App {
init() {
do {
try initializeHERE(
accessKeyId: "YOUR_HERE_ACCESS_KEY_ID",
accessKeySecret: "YOUR_HERE_ACCESS_KEY_SECRET"
)
} catch {
assertionFailure("Failed to initialize HERE SDK: \(error)")
}
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}ContentView.swiftSwift
// Alternative: call it from the view's sdkInitialize closure
HereMapView(state: mapState, sdkInitialize: {
try? initializeHERE(
accessKeyId: "YOUR_HERE_ACCESS_KEY_ID",
accessKeySecret: "YOUR_HERE_ACCESS_KEY_SECRET"
)
})STEP 04
位置情報の権限を足す(必要な場合)
HERE SDK で位置情報サービスを使う場合は Info.plist に用途を書きます。
Info.plistXML
<key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to display on the map</string>
LocationManager.swiftSwift
import CoreLocation
final class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
}
func requestPermission() {
manager.requestWhenInUseAuthorization()
}
}動作確認
ここまで動けば完了
HERE の地図が出てズームとパンが効けば完了です。
ContentView.swiftSwiftUI
import SwiftUI
import MapConductorCore
import MapConductorForHERE
struct ContentView: View {
@StateObject var mapState = HereMapViewState(
mapDesignType: HereMapDesign.NormalDay,
cameraPosition: MapCameraPosition(
position: GeoPoint(latitude: 35.6812, longitude: 139.7671),
zoom: 12.0
)
)
var body: some View {
HereMapView(state: mapState)
.ignoresSafeArea()
}
}地図デザイン
HereMapDesign は HERE のマップスキームに対応します。
HereMapDesign
Notes
NormalDay / NormalNight
標準スタイルの昼・夜
Satellite
衛星画像
HybridDay
衛星画像+道路とラベル
LiteDay
軽量な昼間スタイル
LogisticsDay
物流向け
RoadNetworkDay
道路ネットワーク重視
うまくいかないとき
地図が真っ白のまま
- アクセスキー ID とシークレットが正しいか確認します。
- 地図ビューより先に initializeHERE が呼ばれているか確認します。
- 初期化の throw を捕まえて、エラー内容をログに出します。
ビルドが通らない
- ビルドフォルダーをクリアします(Cmd+Shift+K)。
- ~/Library/Developer/Xcode/DerivedData を削除して再ビルドします。
- Swift Package Manager の依存を更新します。CocoaPods との併用は避けてください。
次に
マーカー・ポリライン・ポリゴン・円・グラウンドイメージ・ラスターレイヤー・InfoBubble はすべて共通 API で使えます。ポリゴンの穴は HERE 側にネイティブの対応がないため、マスクタイルを生成して描画しています。呼び出し側のコードは他プロバイダと同じです。