Как структурировать карту 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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