4

我在支持 2.3.3 的 android 应用程序中使用 maps api v2,并且我设置了 setMyLocationEnabled(true),当然我的按钮在果冻豆上工作正常,但在 2.3.3 上不工作。

以下是我如何称呼地图:

    private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            setUpMap();
        }
    }
}

private void setUpMap(){
    mMap.setMyLocationEnabled(true);
    if(ttdBranch!=null){
        mMap.addMarker(new MarkerOptions()
        .position(new LatLng(ttdBranch.getLatitude(), ttdBranch.getLongitude()))
        .snippet(getResources().getString(R.string.branch) + "\n" + ttdBranch.getName()));
        LatLng pos = new LatLng(ttdBranch.getLatitude(),ttdBranch.getLongitude());
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 14));
    }
}

这是清单:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />

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

<permission android:name="*******.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>

<uses-permission android:name="*******.permission.MAPS_RECEIVE"/>
<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.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_ttd_petales"
    android:label="@string/app_name"
    android:theme="@style/Holo.Theme.Light" >
    <activity
        android:name="*******.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="*******.BranchesMapActivity" />
    <activity android:name="*******.BranchDetailActivity"/>


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

我确保在手机上启用了位置传感器,并且它在谷歌地图应用程序上工作,但不在我的应用程序中。

有什么帮助吗?

谢谢。

4

1 回答 1

1

请在下面检查这个..

1.检查项目中是否存在包含“android-support-v4.jar”的“libs”文件夹。

"android-support-v4.jar" is located in "/extras/android/compatibility/v4/android-support-v4.jar" under your "android-sdk" drectory.

“Google Maps Android API 需要 API 级别 12 或更高级别才能支持 MapFragment 对象。如果您的目标应用程序早于 API 级别 12,您可以通过 SupportMapFragment 类访问相同的功能。您还必须包含 Android支持图书馆。” 本 Android 开发指南(点击此处)中对此进行了描述。

2.在运行您的项目之前,您必须将您的项目构建目标设置为“Google APIs”,而不是 Android xx 版本:

Select your project and click Project > Properties > Project Build Target in Eclipse and select any "Google APIs ", and then run your project on your real phone(handset). If you use the emulator, you will get the failed result because the app with the Google Play Service library is not supported in the emulator.

“Android 模拟器不支持 Google Play 服务——要使用 API 进行开发,您需要提供开发设备,例如 Android 手机或平板电脑。” 本 Android 开发指南(点击此处)中对此进行了描述。

3.再一次,您不需要创建新的 Google Maps API 密钥来测试您的项目,只需使用默认提供的 API 密钥,在您的 Google中显示为“浏览器应用程序密钥(带引用者) ” API 控制台。

4.最后最重要的是将Google Play服务添加为Android库项目如下:

Select File > Import > Android > Existing Android Code Into Workspace and click Next. Select Browse..., enter /extras/google/google_play_services/libproject/google-play-services_lib, and click Finish.

希望我的评论对你有用。

于 2013-01-24T02:14:13.017 回答