<manifest>
<users-permission android:name="android.permission.INTERNET" />
<users-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="APIキー" />
<activity
android:name=".HomeActivity" />
</application>
<FrameLayout
android:id="@+id/map_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<EditText
android:id="@+id/etSearchWord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="場所を入力" />
<Button
android:id="@+id/btMapSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="検索" />
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mMap: GoogleMap
private lateinit var geocoder: Geocoder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//
val mapFragment = SupportMapFragment.newInstance()
supportFragmentManager.beginTransaction()
.replace(R.id.map_container, mapFragment)
.commit()
mapFragment.getMapAsync(this)
geocoder = Geocoder(this, Locale.getDefault())
val btMapSearch = findViewById<Button>(R.id.btMapSearch)
btMapSearch.setOnClickListener {
searchLocation()
}
}
// 東京を初期位置に設定
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isZoomControlsEnabled = true
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(35.6895, 139.6917), 10f))
}
//
private fun searchLocation() {
val etSearchWord = findViewById<EditText>(R.id.etSearchWord)
val searchWord = etSearchWord.text.toString()
if (searchWord.isNotEmpty()) {
try {
val addressList = geocoder.getFromLocationName(searchWord, 1)
if (addressList != null && addressList.isNotEmpty()) {
val address = addressList[0]
val latlng = LatLng(address.latitude, address.longitude)
mMap.clear()
mMap.addMarker(MarkerOptions().position(latLng).title(searchWord)
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f))
} else {
Toast.makeText(this, "位置情報が見つかりません", Toast.LENGTH_LONG).show()
}
} catch (e: IOException) {
e.printStackTrace()
Toast.makeText(this, "検索エラー", Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(this, "検索ワードを入力してください", Toast.LENGTH_LONG).show()
}
}
}