做简单的网站链接,前端网页模板,有交做拼多多网站的吗,软件开发文档范例前一段使用了微信的地图#xff0c;非常的好用。但是存在的问题是海外无法使用#xff0c;出国就不能用了#xff1b;
其实国内三家#xff1a;百度#xff0c;高德#xff0c;微信都是一样的问题#xff0c;当涉及到商业使用的时候需要付费#xff1b;
国外除了谷歌…前一段使用了微信的地图非常的好用。但是存在的问题是海外无法使用出国就不能用了
其实国内三家百度高德微信都是一样的问题当涉及到商业使用的时候需要付费
国外除了谷歌还有一个选择OpenSteetMap,这里记录一下使用流程。
1模块的build.gradle添加 dependencies {
implementation org.osmdroid:osmdroid-android:6.1.11
}
2AndroidManifest.xml中添加依赖 uses-permission android:nameandroid.permission.INTERNET /uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION /uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION /uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /
3布局文件中添加地图的占位的控件
!-- MAP --org.osmdroid.views.MapViewandroid:idid/mapandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:contentDescriptiontestandroid:visibilityvisible /
4主文件初始化中添加
// MainActicity.kt
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// set user agent to prevent getting banned from the osm serversConfiguration.getInstance().userAgentValue BuildConfig.APPLICATION_ID// 缓存路径在应用程序目录下 ,设置nl在根目录下(e.g. tile cache)Configuration.getInstance().osmdroidBasePath //File(/trackbook/mapdata/)this.getExternalFilesDir(null)5) Fragment中添加初始化函数 fun initMap(){val mapView binding.mapval controller mapView.controllermapView.isTilesScaledToDpi truemapView.setTileSource(TileSourceFactory.MAPNIK)//mapView.setTileSource(TileSourceFactory.OpenTopo)mapView.setMultiTouchControls(true)mapView.zoomController.setVisibility(org.osmdroid.views.CustomZoomButtonsController.Visibility.SHOW_AND_FADEOUT)val zoomLevel 11.0controller.setZoom(zoomLevel)val compassOverlay CompassOverlay(context, InternalCompassOrientationProvider(context), mapView)compassOverlay.enableCompass()
// compassOverlay.setCompassCenter(36f, 36f (statusBarHeight / densityScalingFactor)) // TODO uncomment when transparent status bar is re-implementedcompassOverlay.setCompassCenter(36f, 36f)mapView.overlays.add(compassOverlay)val animated trueval position GeoPoint(40.0, 116.0)when (animated) {true - controller.animateTo(position)false - controller.setCenter(position)}}
编译运行即可
我在手机上直接运行方便使用clash设置网络我最近发现真机调试比模拟器好用多了。