java.lang.UnsatisfiedLinkError: GetDistanceByMC 百度DistanceUtil计算距离,出现错误

来源:互联网 发布:联华文具淘宝 编辑:程序博客网 时间:2024/05/16 12:56
使用DistanceUtil计算距离的时候出现
java.lang.UnsatisfiedLinkError: GetDistanceByMC
实际代码如下
GeoPoint start = new GeoPoint(la, lo);
GeoPoint end = new GeoPoint(x, y);
double jl = DistanceUtil.getDistance(start, end);

出现错误 java.lang.UnsatisfiedLinkError: GetDistanceByMC
at com.baidu.platform.comjni.tools.JNITools.GetDistanceByMC(Native Method)

解决办法:
.地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start, onDestroy调用stop,或者onResume/onPause分别调用start和stop。 若没有初始化BMapManager对象,会出现“No implementation found for native Lcom/baidu/platform/comjni/tools/JNITools;.GetDistanceByMC (Ljava/lang/Object;)V”、“java.lang.UnsatisfiedLinkError: GetDistanceByMC”等错误。
、、、、、、。。。。。。。。
BMapManager mBMapMan = null;
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(“你的应用申请百度的key”, null);
注意mBMapMan 上面的操作要放在加载页面setContentView(R.layout.XXXX);之前额。。
其次要加上@Override
protected void onDestroy() {
if (mBMapMan != null) {
mBMapMan.destroy();
mBMapMan = null;
}
super.onDestroy();
}


@Override
protected void onPause() {
if (mBMapMan != null) {
mBMapMan.stop();
}
super.onPause();
}


@Override
protected void onResume() {
if (mBMapMan != null) {
mBMapMan.start();
}
super.onResume();
}


、、、、、、、、、、、、、、、、、、、、、、
另外发现一个问题
 GeoPoint p1LL = new GeoPoint(39971802, 116347927);
GeoPoint p2LL = new GeoPoint(39892131, 116498555);
double distance = DistanceUtil.getDistance(p1LL, p2LL);

如果得到的是精度和维度要转化一下额。
  1. GeoPoint geoPoint = new GeoPoint((int) ( 22.560034 * 1E6),  
  2.    (int) (113.940657 * 1E6));  
  3.      Point point = mapView.getProjection().toPixels(geoPoint, null);  

0 0
原创粉丝点击