所以这是交易:我在ViewPager中使用我的MapView。一切都运行良好,我转发生命周期等... 但由于BitmapDescriptorFactory抛出这个,我无法注册并创建 BitmapDescriptor :
java.lang.IllegalAccessError: Method 'void com.google.android.gms.maps.model.BitmapDescriptorFactory.<init>()' is inaccessible to class 'fr.defvs.gtfs.MainActivity$MapFrag'
这是我的GoogleMap的OnLongClick监听器:
gMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener(){
@Override
public void onMapLongClick(LatLng p1)
{
lat.setText("Lat : " + String.valueOf(p1.latitude));
lon.setText("Lon : " + String.valueOf(p1.longitude));
selectedLatLng = p1;
MapsInitializer.initialize(getContext());
addLocation(p1);
gpsButton.setChecked(false);
gpsMode = false;
}
});
我的addLocation方法:
public void addLocation(LatLng latlng)
{
gMap.addMarker(new MarkerOptions().position(latlng)
.flat(true).icon(new BitmapDescriptorFactory().fromResource(R.drawable.loc)));
}
执行方法时,我得到的就是那个令人讨厌的错误...... 谢谢;)
答案 0 :(得分:2)
BitmapDescriptorFactory有一个私有构造函数,所以你不能创建它的实例 相反,它的所有方法都是静态的,因此您不需要实例。
BitmapDescriptorFactory.fromResource(R.drawable.loc)
请参阅javadoc和source code页面。
我很惊讶您没有收到编译时错误。你没有使用带代码分析的IDE吗?