ꡬκΈλ§΅ μ¬μ©νκΈ°
https://developers.google.com/maps/documentation/android-sdk/secrets-gradle-plugin?hl=ko
- μ΄κ³³μ λΌμ΄λΈλ¬λ¦¬ μ€μΉμ νκ²½μ€μ μ λν μ λ³΄κ° λμμλ€.
API ν€ κ° μμ±νκ³ μλλ‘μ΄λ μ€νλμ€μ μμ±νκΈ°
https://console.cloud.google.com/welcome/new?project=igneous-axiom-426807-f3
Google ν΄λΌμ°λ νλ«νΌ
λ‘κ·ΈμΈ Google ν΄λΌμ°λ νλ«νΌμΌλ‘ μ΄λ
accounts.google.com

μ¬μ© ν΄λ¦νκΈ°
μ¬μ©μ API ν€ μμ± ν, API ν€λ₯Ό ν΄λ¦ν΄μ λ€μ΄κ°μ

Maps SDK for Android APIλ₯Ό μ ννμ¬ μ μ₯ λλ₯΄κ³ ,

ν€ νμ λλ¬μ ν€ κ° μ μ₯ν΄λκΈ°

Android -> Project Filesλ‘ μ΄λνκΈ°


local.defaults.properties μ secrets.properties νμΌ λ§λ€κ³ , local.defaults.propertiesλ₯Ό μλμ κ°μ΄ μμ±νλ€.

API ν€ λ³΅μ¬ν κ² secrets.propertiesμ μμ±νκΈ°

build.gradle (Project)

buildscript {
ββββdependencies {
ββββββββclasspath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
ββββ}
}
build.gradle (:app)

id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")

secrets {
ββββ// Optionally specify a different file name containing your secrets.
ββββ// The plugin defaults to "local.properties"
ββββpropertiesFileName = "secrets.properties"
ββββ// A properties file containing default secret values. This file can be
ββββ// checked in version control.
ββββdefaultPropertiesFileName = "local.defaults.properties"
ββββ// Configure which keys should be ignored by the plugin by providing regular expressions.
ββββ// "sdk.dir" is ignored by default.
ββββignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
ββββignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*"
}

ββββbuildFeatures {
ββββββββbuildConfig = true
ββββ}
implementation("com.google.android.gms:play-services-maps:18.2.0")
Sync Now λλ₯΄κΈ°
Manifest μ€μ νκΈ°


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<meta-data
ββββandroid:name="com.google.android.geo.API_KEY"
ββββandroid:value="${MAPS_API_KEY}"/>
<meta-data
ββββandroid:name="com.google.android.gms.version"
ββββandroid:value="@integer/google_play_services_version"/>
activity_main μμ±νκΈ°

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
ββββxmlns:app="http://schemas.android.com/apk/res-auto"
ββββxmlns:tools="http://schemas.android.com/tools"
ββββandroid:id="@+id/map"
ββββandroid:layout_width="match_parent"
ββββandroid:layout_height="match_parent"
ββββtools:context=".MainActivity"
ββββandroid:name="com.google.android.gms.maps.SupportMapFragment">
</fragment>
MainActivity μμ±νκΈ°
package com.~.map;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
public class MainActivity extends AppCompatActivity {
ββββ@Override
ββββprotected void onCreate(Bundle savedInstanceState) {
ββββββββsuper.onCreate(savedInstanceState);
ββββββββsetContentView(R.layout.activity_main);
ββββββββSupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
ββββββββ// μ§λ μ€λΉλλ©΄ ν΄λ¬λΌλ ν¨μ
ββββββββmapFragment.getMapAsync(new OnMapReadyCallback() {
ββββββββββββ@Override
ββββββββββββpublic void onMapReady(@NonNull GoogleMap googleMap) {
ββββββββββββββββ// λ§΅μ΄ μ€λΉλλ©΄ λ΄ μμΉλ₯Ό μ€μ¬μΌλ‘ μ§λκ° λμ€κ² ν΄λΌ λΌλ μ½λ μμ±
ββββββββββββββββ// 1. νΉμ μλ, κ²½λ κ°μΌλ‘ μ§λμ μμΉλ₯Ό μ μ©μν€λ μ½λ
ββββββββββββββββLatLng myLocation = new LatLng(37.5428, 126.6772); //νννκ³ μ νλ μμΉμ μλ κ²½λ μμ±
ββββββββββββββββgoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 17));
ββββββββββββββββ// 2. λ§μ»€λ₯Ό λ§λ€μ΄μ, μ§λμ νμνλ μ½λ
ββββββββββββββββMarkerOptions markerOptions = new MarkerOptions();
ββββββββββββββββmarkerOptions.position(myLocation).title("μ°ν¬μ§μ
μ λ¬Ένκ΅");
ββββββββββββββββ// 3. λ§μ»€λ₯Ό ν΄λ¦νλ©΄, λμνλ μ½λ μμ±
ββββββββββββββββ// μ€μ! μμμ MarkerOptionsλ₯Ό λ§λ€ λ, νκ·Έλ₯Ό λ¬μμ€μ ꡬλΆν΄ μ€μΌ νλ€.
ββββββββββββββββgoogleMap.addMarker(markerOptions).setTag(0);
ββββββββββββββββgoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
ββββββββββββββββββββ@Override
ββββββββββββββββββββpublic boolean onMarkerClick(@NonNull Marker marker) {
ββββββββββββββββββββββββint tag = (int) marker.getTag();
ββββββββββββββββββββββββToast.makeText(MainActivity.this,
ββββββββββββββββββββββββββββββββ"μ κ° λλ₯Έ λ§μ»€μ νκ·Έλ : " + tag + "\n νμ΄νμ : " + marker.getTitle(),
ββββββββββββββββββββββββββββββββToast.LENGTH_SHORT).show();
ββββββββββββββββββββββββreturn false;
ββββββββββββββββββββ}
ββββββββββββββββ});
ββββββββββββββββ// 4. μ§λμ νμ
μ μ€μ νλ μ½λ
ββββββββββββββββ// googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
ββββββββββββ}
ββββββββ});
ββββ}
}
