Android Google Maps V2无法刷新

时间:2012-12-19 18:25:23

标签: android google-maps refresh loading invalidation

我的应用程序显示用户的驱动路线。几秒钟后,地图停止加载新内容,如下所示: enter image description here

我的代码: 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);

有没有办法让地图无效?

感谢您的帮助!

3 个答案:

答案 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函数等待更新映射,然后继续使用标记。