地图 Android API 在没有在线初始化的情况下无法离线工作
Maps Android API doesn't work offline without online initialization
我在我构建的旅游应用程序中广泛使用离线模式的地图 Android API。在第一次启动应用程序时,我下载了我需要的所有图块,以便稍后在没有 Internet 的情况下也可以在现场使用它们。一切正常,但我注意到地图 API 在安装应用程序后首次使用时确实需要互联网连接。该框架可能会执行 API 密钥验证以确保其合法。
由于我包含 com.google.android.gms.maps.MapView
的片段未显示在第一个屏幕上,因此存在用户下载地图以供在酒店离线使用、进入野外以及... kaboom 的风险! - 地图未显示。
如何初始化Android地图框架,以便稍后在没有连接时可以使用地图?有没有办法跳过在线密钥验证?
如果您的目标是缓存 google 地图的图块以供离线使用,那么您可能违反了他们的条款,您首先需要购买他们的企业地图 API Premier,检查此 link How to cache Google map tiles for offline usage?
经过一些试验,我找到了一个简单的解决方案。
所以,首先,在我的第一个 activity 布局中(它是我所有片段的主机 activity)我添加了以下零大小的不可见 MapView
:
<com.google.android.gms.maps.MapView
android:id="@+id/dummyMapViewToInitForOfflineUse"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
/>
然后,在activity代码中,我添加了以下方法:
private void initGoogleMapFrameworkToMakeItUsableOfflineLater() {
dummyMapViewToInitForOfflineUse.onCreate(new Bundle());
dummyMapViewToInitForOfflineUse.getMapAsync(ignored -> {
Timber.d("GoogleMap framework initialized and ready to use offline later");
});
}
您可以在 onCreate
以及任何其他合理的时刻调用它(我使用 AndroidAnnotations,所以我从我的带有 @AfterViews
注释的 init 方法中调用它)。很明显,如果你不使用AndroidAnnotations或其他视图绑定框架,你需要执行findViewById(R.id.dummyMapViewToInitForOfflineUse)
。
我在我构建的旅游应用程序中广泛使用离线模式的地图 Android API。在第一次启动应用程序时,我下载了我需要的所有图块,以便稍后在没有 Internet 的情况下也可以在现场使用它们。一切正常,但我注意到地图 API 在安装应用程序后首次使用时确实需要互联网连接。该框架可能会执行 API 密钥验证以确保其合法。
由于我包含 com.google.android.gms.maps.MapView
的片段未显示在第一个屏幕上,因此存在用户下载地图以供在酒店离线使用、进入野外以及... kaboom 的风险! - 地图未显示。
如何初始化Android地图框架,以便稍后在没有连接时可以使用地图?有没有办法跳过在线密钥验证?
如果您的目标是缓存 google 地图的图块以供离线使用,那么您可能违反了他们的条款,您首先需要购买他们的企业地图 API Premier,检查此 link How to cache Google map tiles for offline usage?
经过一些试验,我找到了一个简单的解决方案。
所以,首先,在我的第一个 activity 布局中(它是我所有片段的主机 activity)我添加了以下零大小的不可见 MapView
:
<com.google.android.gms.maps.MapView
android:id="@+id/dummyMapViewToInitForOfflineUse"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
/>
然后,在activity代码中,我添加了以下方法:
private void initGoogleMapFrameworkToMakeItUsableOfflineLater() {
dummyMapViewToInitForOfflineUse.onCreate(new Bundle());
dummyMapViewToInitForOfflineUse.getMapAsync(ignored -> {
Timber.d("GoogleMap framework initialized and ready to use offline later");
});
}
您可以在 onCreate
以及任何其他合理的时刻调用它(我使用 AndroidAnnotations,所以我从我的带有 @AfterViews
注释的 init 方法中调用它)。很明显,如果你不使用AndroidAnnotations或其他视图绑定框架,你需要执行findViewById(R.id.dummyMapViewToInitForOfflineUse)
。