我的应用程序显示用户的驱动路线。几秒钟后,地图停止加载新内容,如下所示:
我的代码: XML
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
class="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="19"
android:layout_below="@+id/tracking_maps_colorgradient">
</fragment>
爪哇:
float zoom = 18;//googleMap.getCameraPosition().zoom;
LatLng latLng = new LatLng(lastLatitude, lastLongitude);
locations.add(latLng);
CameraPosition pos = new CameraPosition.Builder()
.target(latLng)
.bearing(bearing)
.zoom(zoom)
.tilt(googleMap.getCameraPosition().tilt)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(pos));
Polyline p = googleMap.addPolyline(new PolylineOptions()
.add(latLng)
.width(15)
.color(Color.RED)
.geodesic(true));
p.setPoints(locations);
有没有办法让地图无效?
感谢您的帮助!
答案 0 :(得分:0)
好的,对于那些有同样问题的人来说,这就是解决方案。问题是GoogleMap会一直刷新,当用户离开边界时你必须改变相机的位置。
LatLngBounds bounds = this.googleMap.getProjection().getVisibleRegion().latLngBounds;
if(!bounds.contains(new LatLng(gps.getLatitude(), gps.getLongitude()))) {
//Move the camera to the user's location if they are off-screen!
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(gps.getLatitude(), gps.getLongitude()))
.zoom(zoom) // Sets the zoom
.bearing(bearing)
.build(); // Creates a CameraPosition from the builder
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
答案 1 :(得分:0)
使用Thread.sleep(300);在使用标记,叠加层等更新地图后,Google地图会使用自己的内部线程,并需要时间来应用更改。向地图添加内容的线程可能会阻止Google Map的线程。睡眠会给它一些时间来进行更新。
答案 2 :(得分:0)
直到遇到问题我才知道。但我解决了,我想与你分享。 您可以使用handler和Thread.sleep(600)。如果您只使用处理程序,则会遇到同样的问题。 Thread.sleep函数等待更新映射,然后继续使用标记。