【问题标题】:Android Google Maps Offline - my location is not shownAndroid Google Maps Offline - 我的位置未显示
【发布时间】:2022-11-15 23:01:12
【问题描述】:

我正在尝试使用适用于 Android 的 Google 地图,离线(永远永远)。 令人惊讶的是,我在这里找不到任何专门提出或解决此问题的问题。

当我使用新的离线手机时,我的应用程序和谷歌地图都显示空白地图(dah,没有加载地图),并且没有显示“我的”位置蓝点。好吧,实际上,没有显示任何标记。

重现

  1. 将任何 Android 手机恢复为出厂设置
  2. 启用定位服务(GPS,在任何阶段都没有连接到互联网)
  3. 打开谷歌地图应用

    --> 看到没有“我的位置”蓝色标记,虽然当你长按屏幕时,应用程序会显示它的坐标(意思是 GPS 可以工作,但地图没有显示)

    技术症状

    1. 即使我加载离线地图(.mbtiles 格式,自定义地图,不是 Google 的),它们仍然没有显示(也没有标记)。就像谷歌放了一些这样的代码: if (no internet) hideAllViews()。 请注意,一旦我将手机连接到互联网,我们的自定义磁贴就可以工作,即使我稍后将手机关闭。

    2. 我可以与地图交互(例如,长按查看点击的位置,这表明我的 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


【解决方案1】:

经过一番研究,我发现在不连接互联网的情况下无法加载 API,因为它是为在线使用而设计的(截至目前),所以这是按预期工作.

请注意,使用 Android 版 Maps SDK 需要先连接互联网才能加载,因为它会检查 API 密钥。然后您可以在一段时间内离线使用地图(离线功能没有明确的时间段需要您再次在线)

但也有客户对此功能感兴趣,因此自 2013 年以来创建的 Google 问题跟踪器中有一个持续的条目,以让 API 用户了解此功能请求。

您可以在此处查看功能请求并为其加注星标: https://issuetracker.google.com/35823181

请注意,上面的问题跟踪器条目是有关上述功能请求的公共信息的权威来源,所有公开相关的更新都将在那里发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2013-02-15
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    相关资源
    最近更新 更多