我添加了行googleMap.setMyLocationEnabled(true);
在我的代码中。
当我从手机上启动应用程序时,地图和用户的位置就会显示出来,一切都很好。
然而,当我从电脑上启动它时,我得到了一个错误:
08-28 11:19:01.524: W/dalvikvm(30617): VFY: unable to resolve static field 20875 (t) in Lyo;
08-28 11:19:01.524: D/dalvikvm(30617): VFY: replacing opcode 0x62 at 0x000e
08-28 11:19:01.529: W/dalvikvm(30617): VFY: unable to resolve static field 20875 (t) in Lyo;
08-28 11:19:01.529: D/dalvikvm(30617): VFY: replacing opcode 0x62 at 0x000d
08-28 11:19:02.129: I/dalvikvm(30617): Failed resolving Lcom/google/android/gms/location/internal/ParcelableGeofence; interface 4023 'Lglm;'
08-28 11:19:02.129: W/dalvikvm(30617): Link of class 'Lcom/google/android/gms/location/internal/ParcelableGeofence;' failed
08-28 11:19:02.129: E/dalvikvm(30617): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method gls.a
08-28 11:19:02.134: W/dalvikvm(30617): VFY: unable to resolve check-cast 2086 (Lcom/google/android/gms/location/internal/ParcelableGeofence;) in Lgls;
它似乎找不到Class ParcelableGeofence。为什么?
在这两种情况下,都会向谷歌API发出请求。所以API密钥是可以的
如果我从代码中删除googleMap.setMyLocationEnabled(true);
,一切都会很好。
编辑:
-
我的完整代码
公共类MapActivity扩展FragmentActivity{
private GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.xml.map_layout); // Loading map initilizeMap(); } /** * function to load map. If map is not created it will create it for you * */ private void initilizeMap() { if (googleMap == null) { googleMap = ((MapFragment) getFragmentManager().findFragmentById( R.id.map)).getMap(); googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); googleMap.setMyLocationEnabled(true); // check if map is created successfully or not if (googleMap == null) { Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT) .show(); } } } @Override protected void onResume() { super.onResume(); initilizeMap(); }}
-
我的XML文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="match_parent"/></RelativeLayout>
-
我的清单文件的一部分
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="packageName.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="packagename.permission.MAPS_RECEIVE" /> <uses-permission android:name="com.google.android.providers.gsf.permisson.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-feature android:name="android.hardware.location" android:required="true" /> <uses-feature android:name="android.hardware.location.gps" android:required="true" /> <compatible-screens> <!-- all small size screens --> <screen android:screenSize="small" android:screenDensity="ldpi" /> <screen android:screenSize="small" android:screenDensity="mdpi" /> <screen android:screenSize="small" android:screenDensity="hdpi" /> <screen android:screenSize="small" android:screenDensity="xhdpi" /> <!-- all normal size screens --> <screen android:screenSize="normal" android:screenDensity="ldpi" /> <screen android:screenSize="normal" android:screenDensity="mdpi" /> <screen android:screenSize="normal" android:screenDensity="hdpi" /> <screen android:screenSize="normal" android:screenDensity="xhdpi" /> </compatible-screens> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxxxxxxxx"/> </application>
试试这个:
googleMap = ((MapFragment) getFragmentManager()
.findFragmentById(R.id.map)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.setMyLocationEnabled(true);
如果这不起作用,请发布您的代码、清单、布局xml
这只是一个黑暗中的镜头,但如果仅在加载地图时启用位置层,会发生什么?像这样:
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
googleMap.setMyLocationEnabled(true);
}
});
地图加载是否正确,然后崩溃?
问题是计算机没有GPS或任何其他方式来跟踪位置