Google Maps v2图块仅在点击Android

时间:2016-06-30 20:53:53

标签: android google-maps google-maps-android-api-2

在Android中使用Google Maps v2时遇到问题。我想将MapView作为布局的一部分。我能够将MapView与标记一起使用,但是瓷砖本身不会加载,除非我点击地图。对于我做的每次点击,都会绘制一个额外的图块(因此需要4或5次点击才能获得整个地图)。

我正在使用Maps V2,但在这种特殊情况下,不是在片段中。作为一个注释,地图在我正在使用MapFragment的另一个地方工作正常。

以下是代码的重要摘要:

活动片段:

public class ViewNodeDetailsGame extends MapActivity implements View.OnClickListener, OnMapReadyCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mBundle = savedInstanceState;

        setContentView(R.layout.activity_view_node_details_game);

        // Maps related
        MapsInitializer.initialize(this);

        // ... the data is fetched asynchronously here. Then, getLocation() is called
    }


    private void getLocation(final LinearLayout llLocation) {

        mMapView = (MapView)llLocation.findViewById(R.id.map);
        mMapView.onCreate(mBundle);
        mMapView.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {

        LatLng sydney = new LatLng(-34, 151);
        map.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        map.animateCamera(CameraUpdateFactory.newLatLng(sydney));

        map.getUiSettings().setMyLocationButtonEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
        map.getUiSettings().setCompassEnabled(true);
        map.getUiSettings().setAllGesturesEnabled(true);

    }

    @Override
    public void onResume() {
        super.onResume();

        if (mMapView != null) {
            mMapView.onResume();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mMapView != null) {
            mMapView.onPause();
        }
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        if (mMapView != null) {
            mMapView.onLowMemory();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);
        if (mMapView != null) {
            mMapView.onSaveInstanceState(outState);
        }
    }

    @Override
    public void onDestroy() {
        super.onDestoy();
        if (mMapView != null) {
               mMapView.onDestroy();
        }
    }

布局的片段。以编程方式添加此布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:padding="5dp"
    android:orientation="vertical">

    <com.google.android.gms.maps.MapView
        android:id="@+id/map"
        android:clickable="true"
        android:enabled="true"
        android:layout_width="match_parent"
        android:layout_height="250dp" />

    <!-- More stuff below -->

我将我的API_KEY包含在AndroidManifest.xml文件中:

   <!-- lots of stuff above this... -->
   <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="AIza --rest of my key here--"
    />
</application>

以下图片显示了每次点击我得到的瓷砖绘画的进展情况。任何提示都表示赞赏。

enter image description here

1 个答案:

答案 0 :(得分:0)

因为你不打电话 活动&#39 onResume()回调中的mMapView.onResume()。