KotlinでAndroidのGoogleマップに現在地を表示する方法【サンプルコード付き】
はじめに
この記事では、Kotlinを使用してAndroidアプリのGoogleマップ上に現在地を表示する方法を、サンプルコード付きで詳しく解説します。
ステップ1:新しいプロジェクトを作成する
Android Studioで新しいプロジェクトを作成します。メニューから「File → New Project」を選択し、必要な情報を入力してプロジェクトを作成してください。
ステップ2:レイアウトファイルを編集する
res/layout/activity_main.xmlに以下のコードを追加します。
<fragment xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:id="@+id/myMap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
ステップ3:依存関係を追加する
build.gradle(Module: app)に以下の依存関係を追加します。Googleマップと位置情報サービスを利用するために必要です。
implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0'
ステップ4:MainActivity.ktにコードを追加する
src/MainActivity.ktに以下のコードを追加します。位置情報パーミッションの確認から現在地の取得、マップへのマーカー表示までを一括して実装しています。
import android.Manifest
import android.content.pm.PackageManager
import android.location.Location
import android.os.Bundle
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.fragment.app.FragmentActivity
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions
class MainActivity : FragmentActivity(), OnMapReadyCallback {
private lateinit var currentLocation: Location
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private val permissionCode = 101
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this@MainActivity)
fetchLocation()
}
private fun fetchLocation() {
if (ActivityCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), permissionCode)
return
}
val task = fusedLocationProviderClient.lastLocation
task.addOnSuccessListener { location ->
if (location != null) {
currentLocation = location
Toast.makeText(applicationContext, currentLocation.latitude.toString() + "" +
currentLocation.longitude, Toast.LENGTH_SHORT).show()
val supportMapFragment = (supportFragmentManager.findFragmentById(R.id.myMap) as
SupportMapFragment?)!!
supportMapFragment.getMapAsync(this@MainActivity)
}
}
}
override fun onMapReady(googleMap: GoogleMap?) {
val latLng = LatLng(currentLocation.latitude, currentLocation.longitude)
val markerOptions = MarkerOptions().position(latLng).title("I am here!")
googleMap?.animateCamera(CameraUpdateFactory.newLatLng(latLng))
googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5f))
googleMap?.addMarker(markerOptions)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>,
grantResults: IntArray) {
when (requestCode) {
permissionCode -> if (grantResults.isNotEmpty() && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
fetchLocation()
}
}
}
}
ステップ5:Google Maps APIキーを取得する
Googleマップを表示するにはAPIキー(map_key)が必要です。以下の手順に従って取得してください。
- Google Cloud Platform Consoleにアクセスします。
- プロジェクトのドロップダウンをクリックし、APIキーを追加するプロジェクトを選択または新規作成します。
- メニューボタン
をクリックし、「APIとサービス」→「認証情報」を選択します。 - 認証情報ページで「認証情報を作成」→「APIキー」をクリックします。ダイアログに新しく作成されたAPIキーが表示されます。
- 「閉じる」をクリックします。
- 新しいAPIキーは、認証情報ページの「APIキー」セクションに一覧表示されます(本番環境で使用する前に、必ずAPIキーに制限を設定してください)。
- ステップ6で示すとおり、マニフェストファイルの<meta-data>タグ内にAPIキーを追加します。
ステップ6:AndroidManifest.xmlを編集する
androidManifest.xmlに以下のコードを追加します。位置情報パーミッションの宣言と、APIキーの設定を忘れずに行いましょう。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q15">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
</manifest>
アプリを実行する
それでは、アプリケーションを実行してみましょう。ここでは、Androidの実機をパソコンに接続しているものとします。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの実行アイコン
をクリックします。接続したモバイルデバイスを選択すると、実機の画面にGoogleマップと現在地を示すマーカーが表示されます。

-
【Android】現在地の緯度・経度を取得する方法をサンプルコード付きで解説
この記事では、Androidアプリで現在地の緯度(latitude)と経度(longitude)を取得する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。位置情報の取得には LocationManager クラスを使用します。GPSがオフの場合に設定画面へ誘導するダイアログの表示や、実行時パーミッションのリクエスト処理もあわせて実装していきます。ステップ1:Android Studioで新規プロジェクトを作成するAndroid Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。
-
【初心者向け】HTML5ジオロケーションとGoogleマップで現在地を表示する方法
HTML5のGeolocation API(ジオロケーションAPI)を使うと、Webサイトと位置情報を共有できるようになります。JavaScriptでデバイスの緯度・経度を取得し、そのデータをバックエンドのWebサーバーへ送信することで、周辺店舗の検索や地図上への現在地表示など、位置情報を活用したさまざまな機能を実装できます。ジオロケーションの座標は、デバイスの地理的な位置を正確に特定するための情報です。 getCurrentPosition()メソッドの仕組み Geolocation APIでは、getCurrentPosition()などのメソッドに対して、位置情報を取得するためのコールバ