我目前正在使用三星Galaxy Tab E上的OSMdroid 5.1开发应用程序。 我的问题是我无法让指南针显示出来。我在互联网和OSMdroid源代码中搜索了几个小时,但我无法弄明白。 我决定在我的个人手机(三星Galaxy S4)上进行测试,结果显示它在这台设备上运行完美。
平板电脑在Android 5.1.1上运行
手机在Android 5.0.1上运行
我正在使用Android Studio 2.1
以下是引用CompassOverlay的所有代码。
@Override
public void onResume() {
super.onResume();
compassOverlay.enableCompass();
myLocationOverlay.enableMyLocation();
//mMyLocationOverlay.enableFollowLocation();
}
@Override
public void onPause() {
super.onPause();
compassOverlay.disableCompass();
this.myLocationOverlay.disableMyLocation();
//this.myLocationOverlay.disableFollowLocation();
}
private void mapEndConfig() {
this.osmv.setBuiltInZoomControls(true);
this.osmv.setMultiTouchControls(true);
osmv.getController().setZoom(11);
double lon = -64.5996; //-74.15702819824206; //,45.6294
double lat = 45.6294; //40.64938745451832;
IGeoPoint point = new GeoPoint(lat, lon); // lat lon and not inverse
osmv.getController().setCenter(point);
myLocationOverlay = new MyLocationNewOverlay(this, osmv);
compassOverlay = new CompassOverlay(this, new InternalCompassOrientationProvider(this), this.osmv, mResourceProxy);
osmv.getOverlayManager().add(myLocationOverlay);
osmv.getOverlayManager().add(compassOverlay);
/*anotherOverlayItemArray = new ArrayList<OverlayItem>();
anotherOverlayItemArray.add(new CompassOverlay());
ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay
= new ItemizedIconOverlay<OverlayItem>(
this, anotherOverlayItemArray, null);
this.mOsmv.getOverlays().add(anotherItemizedIconOverlay);*/
/*myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
osmv.getController().animateTo(myLocationOverlay.getMyLocation());
}
});*/
}
以前似乎没有人用指南针遇到类似的东西,有人有解决方案吗?
答案 0 :(得分:0)
好的,我发现了问题。这是因为三星Galaxy Tab E没有指南针的磁力计。
当OSMdroid没有检测到它时,它不会显示错误或警告,而是显示错误或警告。