【ReactNative】react-native-maps基本編
はじめに
今回は、ReactNative
で地図を表示させる場合に使用するライブラリである、react-native-maps
についての紹介記事です。
インストール自体は簡単ですが、GoogleMap
を使う場合は少しだけ手間がかかるので、そのあたりについても解説します。
react-native-mapsとは
ReactNative
における地図コンポーネントライブラリです。
個人的には地図を表示させるならこれ一択かなと思います。
インストール
以下の環境を前提とします。
react-native@0.63.3
react-native-maps@0.27.1
yarn add react-native-maps
iOS
の場合はpod install
が必要です。
cd ios
pod install
位置情報を使用するのでInfo.plist
のNSLocationWhenInUseUsageDescription
に記載が必要です。
<key>NSLocationWhenInUseUsageDescription</key>
<string>地図上へのプロットのために位置情報を取得します</string>
GoogleMapを使う場合
GoogleMap
を使う場合はGCP
側での設定が必要になります。
ちなみにGoogleMap
をアプリケーションに組み込む場合には料金が発生しますが、スマホアプリの場合Maps SDK for iOS
やMaps SDK for Android
を使うため無料で利用できます。
続いて、iOS
とAndroid
での作業を紹介します。
Android・iOS共通作業
GCP
のプロジェクトを作成します。
iOS
【API設定】からMaps SDK for iOS
を有効化します。
画面の案内に従って表示されるMaps SDK for iOS
のAPIキーを取得します。
AppDelegete.mを修正
ios/[project]/AppDelegete.m
に取得したAPIキーを入力します。
#import<GoogleMaps/GoogleMaps.h> // 追加
// ...略
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[GMSServices provideAPIKey:@"【API_KEY】"]; // 追加
}
続いてios/Podfile
を修正します。
# 追加
pod 'react-native-google-maps', path:'../node_modules/react-native-maps'
pod 'GoogleMaps'
pod 'Google-Maps-iOS-Utils'
Android
【API設定】でMaps SDK for Android
を有効化します。
※画面はiOS
とほとんど同じなので割愛します。
Maps SDK for Android
のAPIキーを取得してandroid/build.gradle
を修正します。
buildscript {
dependencies {
classpath('com.google.android.gms:play-services-base:10.0.1')
classpath('com.google.android.gms:play-services-maps:10.0.1')
}
}
さらにAPIキーをandroid/src/main/AndroidManifest.xml
に記載します。
<application>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="【API KEY】" />
</application>
使い方
MapView
を使って地図を表示させます。
以下は固定座標で地図を全画面表示させた場合のサンプルです。
import React from 'react';
import {View, StyleSheet} from 'react-native';
import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
const App: React.FC = () => {
return (
<View style={StyleSheet.absoluteFillObject}>
<MapView
provider={PROVIDER_GOOGLE}
style={StyleSheet.absoluteFillObject}
initialRegion={{
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
/>
</View>
);
};
export default App;
表示
まとめ
今回はreact-native-maps
の使用方法について紹介しました。
この記事では地図を表示させるところをゴールとしましたが、応用として「現在位置をプロットする」や「タップした場所にマーカーを設置する」等やれることはたくさんあります。
次回以降にreact-native-maps
応用編として、それらの内容を扱っていきたいと思います。
Discussion