Android应用百度地图开发定位的问题,新手求大神帮忙看下

原创 2017年01月02日 13:13:31
本人应届生,在公司上班,因为开发需要,我就去百度地图开放平台学习下百度地图Android 定位SDK 的定位功能,然后我就写了一段能显示地图加定位自己当前位置的代码。为什么我的程序,定位的位置确是太平洋的里面,而不是我当前的位置啊,然后求大神帮忙看看哪里出问题了,顺便帮我想想怎么能定位的点显示“经度纬度”,而且我如果移动一段距离能看到我开始位置到停止位置的轨迹。本人初学者,最好给点代码解释下?谢谢了
ps:采用的都是百度地图最新的Android SDK  v.2.4.1   Android 定位Sdk
代码:
AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.blunt.demo"
    android:versionCode="1"
    android:versionName="1.0" >
     <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />
    <!-- 使用网络功能所需权限 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <!-- SDK离线地图和cache功能需要读写外部存储器 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" >
    </uses-permission>
    <!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE" >
    </uses-permission>
    <!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>

    <permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
    </permission>

    <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_GPS" />

    <application
        
        
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <activity
            android:name="com.blunt.demo.MyMapActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name"
            android:screenOrientation="sensor" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="密钥保密" />
        <service 
            android:name="com.baidu.location.f" 
            android:enabled="true" 
            android:process=":remote"/>
            
      </application>

   </manifest>


主Activity


public class MyMapActivity extends Activity

{
private static final String TAG = "TAG";

BMapManager mBMapMan = null;
MapView mMapView = null;

// 获取地点位置信息
private LocationClient locationClient = null;
private BDLocationListener bdLocationListener = new MyLocationListener();

// 定位到当前位置

private MyLocationOverlay myLocationOverlay = null;
private LocationData locationData = null;

Handler mHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
Toast.makeText(getApplicationContext(), "msg:" + msg.what,
Toast.LENGTH_SHORT).show();
};
};

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(null);

// 注意:请在试用setContentView前初始化BMapManager对象,否则会报错
setContentView(R.layout.activity_my_map);
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapView.setBuiltInZoomControls(true);
// 设置启用内置的缩放控件
MapController mMapController = mMapView.getController();

locationClient = new LocationClient(getApplicationContext());
locationClient.registerLocationListener(bdLocationListener);

LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 是否打开GPRS
option.setAddrType("all");// 返回的定位结果包含地址信息
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(50000);// 设置发起定位请求的间隔时间为5000ms
option.disableCache(true);// 禁止启用缓存定位
option.setPoiNumber(5); // 最多返回POI个数
option.setPoiDistance(1000); // poi查询距离
option.setPriority(LocationClientOption.NetWorkFirst);
locationClient.setLocOption(option);
locationClient.start();
if (locationClient != null && locationClient.isStarted())
{
locationClient.requestLocation();
locationClient.requestPoi();
} else
{
Log.d(TAG, "locClient is null or not started");
}

mMapController.setZoom(12);// 设置地图zoom级别

myLocationOverlay = new MyLocationOverlay(mMapView);
locationData = new LocationData();
myLocationOverlay.setData(locationData);
mMapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableCompass();
mMapView.refresh();

}




@Override
protected void onStop()
{
locationClient.stop();
super.onStop();
}

@Override
protected void onDestroy()
{

mMapView.destroy();
locationClient.unRegisterLocationListener(bdLocationListener);

if (mBMapMan != null)
{
mBMapMan.destroy();
mBMapMan = null;
}
locationClient.stop();
myLocationOverlay.disableCompass();
myLocationOverlay = null;
mMapView = null;
locationClient = null;
locationData = null;
super.onDestroy();
}

@Override
protected void onPause()
{

mMapView.onPause();
if (mBMapMan != null)
{
mBMapMan.stop();
}
locationClient.stop();

super.onPause();
}

@Override
protected void onResume()
{

mMapView.onResume();
if (mBMapMan != null)
{
mBMapMan.start();
}
locationClient.start();
super.onResume();
}

private class MyLocationListener implements BDLocationListener
{

@Override
public void onReceiveLocation(BDLocation location)
{
// Log.v(TAG,
// "onReceiveLocation--->getLatitude--->"+String.valueOf(position.getLatitude()))
// ;
// Log.v(TAG,
// "onReceiveLocation--->getLocType--->"+String.valueOf(position.getLongitude()))
// ;
// Log.v(TAG,
// "onReceiveLocation--->getRadius--->"+String.valueOf(position.getRadius()))
// ;
// Log.v(TAG,
// "onReceiveLocation--->position--->"+String.valueOf(position.getAddrStr()))
// ;

locationData.latitude  = location.getLatitude();
locationData.longitude = location.getLongitude();
locationData.accuracy  = location.getRadius();
locationData.direction = location.getDerect();
myLocationOverlay.setData(locationData);
mMapView.refresh();
mMapView.getController().animateTo(
new GeoPoint((int) (locationData.latitude * 1e6),
(int) (locationData.longitude * 1e6)),
mHandler.obtainMessage(1));

}

@Override
public void onReceivePoi(BDLocation location)
{
locationData.latitude = location.getLatitude();  

locationData.longitude = location.getLongitude();  

}

}
}

基于Android的百度地图开发

参考资料: android studio获得SHA1的值,然后在百度地图移动版API官网申请key Android Studio怎么查看程序的安全码获取SHA1值?   http://www.code...
  • qq_26898461
  • qq_26898461
  • 2016年07月28日 11:06
  • 959

Android 百度地图简单定位

百度地图    首先按官方文档上的步骤做: 下载官方的文档,导jar包,我是用的eclipse做的, 在AndroidManifest中添加开发密钥、所需权限等信息; (1)在appl...
  • Zhangxuexue_
  • Zhangxuexue_
  • 2016年09月19日 19:02
  • 8364

Android开发之实现百度地图定位功能

之前写了一篇高德地图定位的,现在写一篇百度的。 关于百度开放平台的注册、SDK的下载和申请APK就不说了,和高德的差不多。那就进入正题,看看如何使用百度地图SDK实现定位功能吧。1. 配置环境 导入...
  • Mr_wzc
  • Mr_wzc
  • 2016年06月05日 17:41
  • 6271

Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用

这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是“图层”或“覆盖物”的意思,MyLocationOv...
  • xiaanming
  • xiaanming
  • 2013年09月09日 15:38
  • 129462

Android开发 百度地图开发(定位、传感器应用)

前言结合传感器的使用实现百度地图的开发,基本功能包括实时定位。其中利用传感器确定手机朝向并实现图标方位转动以及摇一摇功能的实现。功能介绍 调用百度地图SDK实现地图的展示以及交互,其中包括左下角的按钮...
  • zhaokx3
  • zhaokx3
  • 2016年12月10日 23:47
  • 961

在android项目中简单的集成baidu地图之定位功能

第一步、进入百度地图android 定位SDK界面 http://developer.baidu.com/map/index.php?title=android-locsdk 第二步、获取密钥后创建...
  • bruceyangjie
  • bruceyangjie
  • 2015年12月25日 17:17
  • 1248

Android使用百度地图API实现定位app

前言:有时候,我们活得很累,并非生活过于刻薄,而是我们太容易被外界的氛围所感染,被他人的情绪所左右。行走在人群中,我们总是感觉有无数穿心掠肺的目光,有很多飞短流长的冷言,最终乱了心神,渐渐被缚于自己编...
  • qq_31307919
  • qq_31307919
  • 2016年05月30日 19:38
  • 11984

Android 定位之百度地图定位 问题总结

之前做百度地图定位这个功能,碰到的问题非常多,这里总结一下 百度地图官方文档里面解释的很清楚,现在百度定位采用的是基站  wifi 和gps三者混合定位,但是这个优先级我们是可以调整的。 1....
  • shaoyezhangliwei
  • shaoyezhangliwei
  • 2015年04月02日 11:59
  • 3650

Android Eclipse 开发引用百度地图定位

本文适合刚开始应用百度地图者,只是定位
  • u013146742
  • u013146742
  • 2016年04月14日 16:59
  • 1853

(01)关于我在使用百度地图开发常见到的问题

(首先是到百度地图开发的网站去下载SDK)   相关的一些步骤我是按照http://www.cnblogs.com/dqrcsc/p/4656522.html    1》上面的教程写的 但其中有一步骤...
  • qq_32565575
  • qq_32565575
  • 2016年10月09日 15:09
  • 695
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android应用百度地图开发定位的问题,新手求大神帮忙看下
举报原因:
原因补充:

(最多只允许输入30个字)