【发布时间】:2020-08-16 14:38:05
【问题描述】:
我在 Kotlin 中有一个非常基本的 Android 应用。
我正在尝试以设备当前位置为中心,但myLocationOverlay.myLocation 始终是null。
我做错了吗?我一直在疯狂地谷歌搜索,但似乎没有任何效果。
谢谢!
class MainActivity : AppCompatActivity() {
private lateinit var map: MapView
private lateinit var mapController: IMapController
private lateinit var myLocationOverlay: MyLocationNewOverlay
override fun onCreate(savedInstanceState: Bundle?) {
// Load and set layout
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Create MapView
map = findViewById(R.id.map)
// Set tile source + display settings
map.setTileSource(TileSourceFactory.MAPNIK)
map.setMultiTouchControls(true)
map.zoomController.setVisibility(CustomZoomButtonsController.Visibility.NEVER)
// Create MapController and set starting location
mapController = map.controller
// Create location overlay
myLocationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(this), map)
myLocationOverlay.enableMyLocation()
myLocationOverlay.enableFollowLocation()
myLocationOverlay.isDrawAccuracyEnabled = true
myLocationOverlay.runOnFirstFix{runOnUiThread {
mapController.animateTo(myLocationOverlay.myLocation)
mapController.setZoom(9.5)
}}
map.overlays.add(myLocationOverlay)
// Set user agent
Configuration.getInstance().userAgentValue = "RossMaps"
println(myLocationOverlay.myLocation)
println("Create done")
}
override fun onResume() {
super.onResume()
map.onResume()
}
override fun onPause() {
super.onPause()
map.onPause()
}
}
【问题讨论】: