Android用のGoogleマップv2用のGoogle APIキーを作成しました。すべてがGoogleマップ用のEclipseでセットアップされています(Google + APIビルドを使用し、Google Playサービスへのリンク、APIキーのソートなど)、マップアプリを正常に表示できます私の電話ですが、AVD で同じアプリを表示すると、正しい場所に移動し、すべての Google マップ オーバーレイ (ズーム ボタンなど) を見ることができますが、マップはなく、単なる灰色のボックスです。ネットワーキングも問題ありません。
最新の 4.3 API 18 ビルドを使用しており、AVD はデフォルトの Nexus One です。これに先立って、私が見つけた恐ろしい「Googleプレイサービスの更新」メッセージを受け取りました.これは、マップv2が単に4.2で動作していないことが原因であったため、AVDのSDK 18でマップが正常に動作するはずであるという読書をアップグレードしました.
なぜそれが表示されないのですか?AVD を起動すると、opengl ソフトウェアを使用していると表示されることに気付きましたが、問題ないと思っていました。
さまざまなスタックオーバーフローの記事を読みましたが、それらはすべて不適切な構成を指しており、私の電話に送信しても問題なく動作し、エラーは発生しません。
ここで役立つ場合は、私が使用しているコードのスニペットをいくつか示します。
マニフェスト:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="XXXXXXXXXXXXXXXXXXXX"/>
レイアウト スニペット:
<fragment
android:id="@+id/worldmap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
マップを初期化するコード:
private void initialiseMap() {
if (googleMap == null) {
googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(
R.id.worldmap)).getMap();
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(activity.getApplicationContext(),
"Unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
地図を表示するコード:
private void displayLocation(Location l, String text) {
if(googleMap!=null) {
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
LatLng ll=new LatLng(l.getLatitude(), l.getLongitude());
CameraPosition cp=new CameraPosition.Builder()
.target(ll)
.zoom(18)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
Toast.makeText(activity, l.getLatitude()+":"+l.getLongitude(), Toast.LENGTH_LONG).show();
}
}