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>
次の画像は、私は、各クリックで取得タイル絵の進行を示しています。任意のヒントが評価されます。
はい、実際は私です。私はちょうどそのスニペットにそれを加えなかった。私はちょうどコードを更新しました。 – zundi
getLoation()はonCreate()の内部で呼び出されているか、別の呼び出しスタックから呼び出されていますか? – duanbo1983
asynctaskは 'onCreate()'で開始されます。これは、 'getLocation()'メソッドが呼び出されたデータの取得が終了したときに実行されます。 – zundi