我在Android应用程序中使用支持2.3.3的地图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="*******"/>
我确定手机已启用位置传感器,并且它在Google地图应用中工作,但不在我的应用中。
任何帮助?
感谢。
答案 0 :(得分: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支持库。“是described in this Android Development Guide(click here)。
2.在运行项目之前,必须将项目构建目标设置为“Google API”,而不是Android x.x.版本:
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手机或平板电脑等开发设备。”在this Android Development Guide(click here)中描述。
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.
我希望我的评论对您有用。