2016-06-30 6 views
0

AndroidでGoogle Maps v2を使用しているときに問題が発生しています。私はレイアウトの一部としてMapViewを持っていたい。 MapViewとマーカーを一緒にマップすることはできますが、マップをクリックしない限り、タイル自体はロードされません。クリックするたびに、追加のタイルがペイントされます(マップ全体を取得するには4〜5回のクリックが必要です)。Google Maps v2のタイルは、Androidのクリック後に塗られます。

私はマップ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(); 
     } 
    } 

スニペット

次のコードスニペット重要です。このレイアウトは、プログラムで追加された:私はAndroidManifest.xmlファイルで私のAPI_KEYを含めています

<?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 --> 

<!-- 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

答えて

0

あなたは活動のonResume()コールバックで mMapView.onResume()を呼び出していないからです。

+0

はい、実際は私です。私はちょうどそのスニペットにそれを加えなかった。私はちょうどコードを更新しました。 – zundi

+0

getLoation()はonCreate()の内部で呼び出されているか、別の呼び出しスタックから呼び出されていますか? – duanbo1983

+0

asynctaskは 'onCreate()'で開始されます。これは、 'getLocation()'メソッドが呼び出されたデータの取得が終了したときに実行されます。 – zundi

関連する問題