如何在 osmdroid 上搜索位置名称以获取纬度经度

how to search location name on osmdroid to get latitude longitude

如何使用open street map osmdroid通过搜索位置名称获取经纬度。

我的期望是,它看起来像实现 google 地图位置自动完成,但我不知道如何在 osmdroid 中制作自动完成位置。我没有找到任何使用 osmdroid

按位置名称搜索位置的教程

所以我找到了这种用 osmdroid 搜索位置的方法,但这不是我所期望的。我正在使用地理编码器在此处搜索位置参考

https://developer.android.com/reference/android/location/Geocoder

第一步我们要做一个搜索框Edittext来搜索位置,逻辑是这样的

etSearch.setOnEditorActionListener { _, actionId, _ ->
  if (actionId == EditorInfo.IME_ACTION_SEARCH) {
    etSearch.clearFocus()
    val query = etSearch.text.toString()
    if (query != "") {
      getLocationName(query)
      } else {
        Toast.makeText(
          requireContext(),
          getString(R.string.mohon_isi_terlebih_dahulu),
          Toast.LENGTH_SHORT
          ).show()
      }
    }
  true
}

从搜索框中获取查询文本后,我们需要调用函数 getLocationName(String),该函数如下所示

fun getLocationName(locationName: String){
    try {
        val geocoder = Geocoder(requireContext(), Locale.getDefault())
        var geoResults: List<Address> = geocoder.getFromLocationName("$locationName", 1)
        if (geoResults.isNotEmpty()) {
            val addr = geoResults[0]
            val location = GeoPoint(addr.latitude, addr.longitude)
            moveCameraMap(location)
        }else{
            Toast.makeText(requireContext(),"Location Not Found",Toast.LENGTH_LONG)
        }
    } catch (e: java.lang.Exception) {
        print(e.message)
    }
}

在函数中我们可以看到地理编码器调用 getFromLocationName("location name", max result),我们得到了纬度和经度。

这是我的解决方案,我希望有人能改进它。感谢您的帮助