2

では、バッチ ファイルを作成して SHA1 フィンガープリントを取得しました。その後、「サービス」ページに移動し、Google Maps API v2 および v3 を有効にしました。また、「API アクセス」ページに移動し、SHA1;PACKAGENAME で新しい Android キーを作成しました。この後、プロジェクト フォルダーに移動し、次のコードを追加しました。

<permission
    android:name            = "com.example.test.permission.MAPS_RECEIVE"
    android:protectionLevel = "signature" 
/>

<uses-feature
    android:glEsVersion     = "0x00020000"
    android:required        = "true" 
/>

<uses-permission android:name="com.example.test.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-library android:name="com.google.android.maps" />

<meta-data
        android:name    = "com.google.android.maps.v2.API_KEY"
        android:value   = "APIKEY" 
/>

また、XML ファイルを作成し、次のコードを貼り付けました。

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android           = "http://schemas.android.com/apk/res/android"
    android:id              = "@+id/mapview_MV"
    android:layout_width    = "fill_parent"
    android:layout_height   = "fill_parent"
    android:clickable       = "true"
    android:apiKey          = "APIKEY"
/>

HTC One X+ でプロジェクトをコンパイルして実行した後、グレーのタイルの束しか見えませんでした。また、以下に示すように、コードで MapView を使用しようとしました。

/********************************************************************
* ONCREATE                                                          *
********************************************************************/
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView( R.layout.general_layout );

    MapView mapView = new MapView( GamePage.this, "APIKEY" );
    MapController mc = mapView.getController();
    String coordinates[] = {"1.352566007", "103.78921587"};
    double lat = Double.parseDouble(coordinates[0]);
    double lng = Double.parseDouble(coordinates[1]);

    GeoPoint p = new GeoPoint( (int) (lat * 1E6), (int) (lng * 1E6) );

    mc.animateTo(p);
    mc.setZoom(17); 

    FrameLayout fl = ( FrameLayout ) findViewById(R.id.general_frameHolder_FL);
    fl.addView(mapView);
}

次のエラーが表示されます。

Couldn't get connection factory client

誰が私が間違っているのか教えてもらえますか!?

4

4 に答える 4

2

Google マップ Android API v2 を有効にしてみてください ここに画像の説明を入力

メタ キーはアプリケーション タグの下にある必要があります

<permission
    android:name            = "com.example.test.permission.MAPS_RECEIVE"
    android:protectionLevel = "signature" 
/>

<uses-feature
    android:glEsVersion     = "0x00020000"
    android:required        = "true" 
/>

<uses-permission android:name="com.example.test.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-library android:name="com.google.android.maps" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <!-- key v2 -->
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="Bla Bla" />

    <uses-library
        android:name="com.google.android.maps"
        android:required="false" />
    <activity
        android:name="com.example.test.MainActivity"
        android:label="@string/st_google_activity_main" >
    </activity>
</application>

また、MapView を使用する場合は、すべてのアクティビティ ライフ サイクル メソッドを転送する必要があります。

XML レイアウト

<?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="match_parent"
    android:orientation="vertical" >
        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>

クラス

public class MainActivity extends android.support.v4.app.FragmentActivity implements OnMapClickListener , OnMapLongClickListener , OnCameraChangeListener {
    private GoogleMap                   mMap;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_googlev2);
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        mMap.setOnMapClickListener(this);
        mMap.setOnMapLongClickListener(this);
        mMap.setOnCameraChangeListener(this);
    }
}
于 2013-01-18T09:40:21.583 に答える
1

私にはAPIキーの問題のようです..この方法で与えてみてください

android:apiKey="0BYX7MFyg8lWRKFxzwG-D93VMxZP6wH5eObwEtw"

ログを確認してください。Google Map Lib からエラー ログを取得していますか?

于 2013-01-18T10:02:33.527 に答える
1

問題の解決策を見つけました。何らかの理由で多くのパッケージを見逃していたため、SDK Manager で Google Play Services を削除して再インストールする必要がありました。Fido のおかげで、MapView が Google Maps Android v2 API でサポートされていないことがわかり、https://developers.google.com/maps/documentation/android/start#specifying_permissions で紹介全体を読みまし

その後、NoClassFoundError を解決できるサイトも見つけました: http://www.user.tu-berlin.de/hennroja/tutorial_fixing_java.lang.NoClassDefFoundError%20com.google.android.gms.R $styleable. html

新しい Google Maps API でこの問題を解決するのに +-5 時間かかりました。

于 2013-01-18T12:55:53.873 に答える