在用户交互之前,GoogleMap 不会加载详细地图
GoogleMap won't load detailed map until user interaction
我正在 android 上编写一个应用程序,它将显示来自 google 地图的地图。当我启动应用程序时,地图以当前位置为中心。当我使用animateCamera
时,我可以看到整个世界的放大动画,直到它聚焦到当前位置。
问题是我需要触摸地图才能让地图以我期望的缩放级别显示。
这是我在触摸屏幕之前得到的:
Before touch
这是我触摸屏幕后得到的结果:
After touch
如果我触摸屏幕,图像会保持良好,直到我行驶几百米,然后它又无法使用。有时会出现图像,但每10公里只有1或2次。
下面是我如何在 LocationListener::onLocationChanged
内移动相机:
float zoom = 19.0f;
LatLng target = new LatLng(location.getLatitude(), location.getLongitude());
// moving car marker
m_locationMarkerG.setPosition(target);
m_locationMarkerG.setRotation(location.getBearing());
// tilting camera depending on speed
float tilt = Math.min(90, location.getSpeed()*10);
m_mapViewG.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition.builder().zoom(zoom).bearing(location.getBearing()).
target(target).tilt(tilt).build()));
我可以尝试解决这个问题吗?
谢谢
找到解决方案:
animateCamera 必须从主循环程序调用。 LocationListener 是从另一个线程(传感器的线程)调用的。
所以代码变成:
final float zoom = 19.0f;
final LatLng target = new LatLng(location.getLatitude(), location.getLongitude());
// tilting camera depending on speed
final float tilt = Math.min(90, location.getSpeed()*10);
m_handler.post(new Runnable() {
public void run() {
// moving car marker
m_locationMarkerG.setPosition(target);
m_locationMarkerG.setRotation(location.getBearing());
// moving camera
m_mapViewG.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition.builder().zoom(zoom).bearing(location.getBearing()).target(target).tilt(tilt).build()));
}
});
我正在 android 上编写一个应用程序,它将显示来自 google 地图的地图。当我启动应用程序时,地图以当前位置为中心。当我使用animateCamera
时,我可以看到整个世界的放大动画,直到它聚焦到当前位置。
问题是我需要触摸地图才能让地图以我期望的缩放级别显示。
这是我在触摸屏幕之前得到的: Before touch
这是我触摸屏幕后得到的结果: After touch
如果我触摸屏幕,图像会保持良好,直到我行驶几百米,然后它又无法使用。有时会出现图像,但每10公里只有1或2次。
下面是我如何在 LocationListener::onLocationChanged
内移动相机:
float zoom = 19.0f;
LatLng target = new LatLng(location.getLatitude(), location.getLongitude());
// moving car marker
m_locationMarkerG.setPosition(target);
m_locationMarkerG.setRotation(location.getBearing());
// tilting camera depending on speed
float tilt = Math.min(90, location.getSpeed()*10);
m_mapViewG.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition.builder().zoom(zoom).bearing(location.getBearing()).
target(target).tilt(tilt).build()));
我可以尝试解决这个问题吗?
谢谢
找到解决方案:
animateCamera 必须从主循环程序调用。 LocationListener 是从另一个线程(传感器的线程)调用的。
所以代码变成:
final float zoom = 19.0f;
final LatLng target = new LatLng(location.getLatitude(), location.getLongitude());
// tilting camera depending on speed
final float tilt = Math.min(90, location.getSpeed()*10);
m_handler.post(new Runnable() {
public void run() {
// moving car marker
m_locationMarkerG.setPosition(target);
m_locationMarkerG.setRotation(location.getBearing());
// moving camera
m_mapViewG.animateCamera(CameraUpdateFactory.newCameraPosition(CameraPosition.builder().zoom(zoom).bearing(location.getBearing()).target(target).tilt(tilt).build()));
}
});