Как структурировать карту Google, чтобы ее можно было использовать во всем приложении Android? ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
Как структурировать карту Google, чтобы ее можно было использовать во всем приложении Android?

Сообщение Anonymous »

Я работаю над Project Map в Android Kotlin. У меня есть одно главное действие, которое реализует onmapreadycall Back < /p>
mainactivity.kt

Код: Выделить всё

class MainActivity : BaseActivity(), OnMapReadyCallback, MapController {
private lateinit var googleMap: GoogleMap

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

initialize()
initializeMap()
}

override fun getLayoutResourceId(): Int {
return R.layout.activity_main
}

override fun onMapReady(map: GoogleMap) {
this.googleMap = map
}

private fun initialize() {
}

private fun initializeMap() {
val mapFragment =
supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
mapFragment?.getMapAsync(this)
}

override fun getGMap(): GoogleMap? {
return if (isMapReady()) googleMap else null
}

override fun isMapReady(): Boolean {
return ::googleMap.isInitialized
}
}
< /code>
mapcontroller.kt
interface MapController {
fun getGMap(): GoogleMap?
fun isMapReady() : Boolean
}
Я хочу карту Google для остального фрагмента, чтобы я мог добавлять и использовать различные компоненты, такие как маркер, полилиния, полигон и т. Д.
Как определить/хранить/структурировать карту Google? Таким образом, я могу использовать это в нескольких местоположении и файлах < /p>
Да, я знаю, что я могу передать GoogleMap в качестве аргумента, но это не эффективный способ, я думаю. Карта Google < /p>
Фрагмент дискеткуляции: < /p>

Код: Выделить всё

class DistanceFragment : BaseFragment(){
private lateinit var googleMap: GoogleMap
protected open var mapController: MapController? = null

override fun onAttach(context: Context) {
super.onAttach(context)
Log.i(TAG, "Fragment attached")
mapController = context as? MapController
?: throw ClassCastException("$context must implement MapController")
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
mapController?.let { controller ->
if (controller.isMapReady()) {
googleMap = controller.getGMap()!!
setupMapEvents()
}
}
}
}
Я должен написать этот код в каждом отдельном фрагменте, где я хочу использовать карту Google, так что это слишком много,
Я знаю, что есть эффективный и более безопасный способ получить карту Google

Подробнее здесь: https://stackoverflow.com/questions/797 ... pp-android

Вернуться в «Android»