【发布时间】:2022-11-15 23:01:12
【问题描述】:
我正在尝试使用适用于 Android 的 Google 地图,离线(永远永远)。 令人惊讶的是,我在这里找不到任何专门提出或解决此问题的问题。
当我使用新的离线手机时,我的应用程序和谷歌地图都显示空白地图(dah,没有加载地图),并且没有显示“我的”位置蓝点。好吧,实际上,没有显示任何标记。
重现
- 将任何 Android 手机恢复为出厂设置
- 启用定位服务(GPS,在任何阶段都没有连接到互联网)
- 打开谷歌地图应用
--> 看到没有“我的位置”蓝色标记,虽然当你长按屏幕时,应用程序会显示它的坐标(意思是 GPS 可以工作,但地图没有显示)
技术症状
-
即使我加载离线地图(.mbtiles 格式,自定义地图,不是 Google 的),它们仍然没有显示(也没有标记)。就像谷歌放了一些这样的代码:
if (no internet) hideAllViews()。 请注意,一旦我将手机连接到互联网,我们的自定义磁贴就可以工作,即使我稍后将手机关闭。 -
我可以与地图交互(例如,长按查看点击的位置,这表明我的 GPS 位置确实有效),但仅此而已(直到我将手机连接到互联网,然后我可以将其设为离线再次,但一切都令人惊讶地工作)。
代码示例- 简化版
//build.gradle: implementation 'com.google.android.gms:play-services-maps:17.0.0' //MapActivity.kt import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.MapView import com.google.android.gms.maps.MapsInitializer class MapActivity : AppCompatActivity { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.map_activity) val mapFragment = supportFragmentManager.findFragmentByTag(MAP_FRAGMENT_TAG) as MapFragment? ?: MapFragment().also { supportFragmentManager.beginTransaction().add(R.id.map, it, MAP_FRAGMENT_TAG).commit() } mapFragment.getMapAsync(::onMapReady) mapFragment.retainInstance = true } private fun onMapReady(map: GoogleMap) { map.isMyLocationEnabled = true map.uiSettings.isMyLocationButtonEnabled = true Log.d("GoogleMap", "Map should be ready and visible with my-location marker shown, if phone's GPS is enabled") } }我希望这里有人知道一个技巧或在谷歌工作过,并能对此有所了解。
谢谢!
-
与大多数类似的问题相反,我确实知道如何使这项工作(互联网......),但我特别询问一个用例,其中新的电话可以绝不连接到互联网 - 甚至不是一秒钟一次。
-
我熟悉其他离线地图服务,但我正在尝试用谷歌的地图解决这个问题,至少现在是这样
-
-
【问题讨论】:
-
请提供允许重现问题的minimal reproducible example(您的代码)。
-
嗨@MrUpsidown,谢谢您的帮助。我不确定要提供什么示例,因为我询问的是非常基本的 GoogleMaps 功能。例如,谷歌地图应用程序本身的工作方式相同(使用新的离线手机时,空白地图上没有“我的位置”标记)。我将编辑问题以澄清这一点
-
我的评论有点讽刺......你的问题是关于使用谷歌地图应用程序?还是您在询问您开发的应用程序?如果没有涉及(您的)代码,那么您最好在superuser.com 上提问,因为您的问题在这里是题外话(与编程无关)。
-
我根据您的建议添加了一些代码。希望能帮助到你。
-
对该主题进行了非常快速的研究,我在这里发现了许多 Q/A,指出缓存 Google 地图图块违反了他们的 TOS。如果您使用自己的瓷砖(瓷砖服务器),那么它似乎是可行的。
标签: android google-maps android-gps offline-mode mbtiles