第三方集成百度地图定位

 

 
 
百度基础地图和基础定位
一、申请AK(API Key)
 
要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。
1、首先注册成为百度的开发者,然后打开
http://lbsyun.baidu.com/apiconsole/key
注册:
 
激活邮箱
 
创建应用:
 
2、我们需要获取SHA1,还要找自己项目的包名,这样才能得到安全码
那就直接:win+r,cmd,来到dos命令窗口,
 
输入【 cd .android keytool -list -v -keystore debug.keystore】回车,
然后提示你输入【秘钥库口令】,输入【android】回车然后就会显示SHA1的值。
 
在AndroidMainfest.xml找自己的包名
 
3、输入从DOS获得的SHA1 ,以及自己的项目包名:
 
 
 
然后我们把key输入项目:
 
二、下载SDK开发包
 
自行选择你需要的,我这里选择基础定位
 
下载之后,压缩包有8.8M,解压后有16M,lib里面有5个so包文件夹,一个jar包
 
 
 
 BaiduLBS_Android.jar (右键) -  Add As Library 
 
 这个解析能加载到你的build.gradle(app)中
 
1、AndroidManifest.xml 
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>


 
AndroidManifest.xml
<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="你的AK" />
 
<service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote"
    ></service>
 
在布局xml文件中添加地图控件;
<com.baidu.mapapi.map.MapView
    android:id="@+id/bmapview"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:clickable="true" />
MainActivity代码
public class MainActivity extends AppCompatActivity {
    // 百度地图控件
    private MapView mMapView = null;
    // 百度地图对象
    private BaiduMap bdMap;
    private Button bt;
    boolean isFirstLoc = true; // 是否首次定位
    // 定位相关
    LocationClient mLocClient;
    private String path;
    public MyLocationListenner myListener = new MyLocationListenner();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        init();
    }
    /**
     * 初始化方法
     */
    private void init() {
        mMapView = (MapView) findViewById(R.id.bmapview);
        bt=(Button) findViewById(R.id.button);



        bdMap = mMapView.getMap();
//普通地图
        bdMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
        bdMap.setBaiduHeatMapEnabled(true);
        bdMap.setTrafficEnabled(true);

        bdMap.setMyLocationEnabled(true);
// 定位初始化
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setIsNeedAddress(true);//设置获得地址位置
        option.setEnableSimulateGps(true);
        option.setIsNeedLocationPoiList(true);//设置获得poi
        option.setOpenGps(true); // 打开gps

        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);
        mLocClient.setLocOption(option);
        mLocClient.start();
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                setResult(12,new Intent(path));

            }
        });

    }
    /**
     * 定位SDK监听函数
     */
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            String str = "定位的信息:"+location.getAddress().address+",纬度:"
                    +location.getLatitude();
            Toast.makeText(MainActivity.this,",纬度:"+location.getLatitude()+"经度"+location.getLongitude(),Toast.LENGTH_LONG).show();
          //  bt.setText(location.getAddress().address);
            List l = location.getPoiList();
            str += ",poi数量:"+l.size()+",第一个:"+((Poi)(l.get(0))).getName();
            path=location.getAddress().address;
            Log.i("TAG", str);

            // map view 销毁后不在处理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(5).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            bdMap.setMyLocationData(locData);
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                bdMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        @Override
        public void onConnectHotSpotMessage(String s, int i) {

        }

        public void onReceivePoi(BDLocation poiLocation) {
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
        mMapView.onDestroy();
        mMapView = null;
        super.onDestroy();
    }
}
这样简单的定位就成功了
  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要调用第三方库(如高德地图或百度地图)来获取GPS定位数据,你可以按照以下步骤进行: 1. 注册开发者账号:前往所选择的地图服务提供商的官方网站,注册一个开发者账号并创建一个应用程序。这些地图服务提供商通常会提供开发者文档和API密钥。 2. 获取API密钥:在你的开发者账号中,获取相应地图服务提供商的API密钥。这个密钥将用于身份验证和访问地图服务的权限。 3. 集成第三方库:根据你选择的地图服务提供商,下载并集成相应的第三方库到你的虚幻引擎项目中。这些第三方库通常会提供API接口和函数,用于获取GPS定位数据和其他地图相关功能。 4. 初始化地图服务:在你的虚幻引擎项目中,使用你的API密钥初始化地图服务。这可以通过调用相应第三方库提供的初始化函数来实现。 5. 请求GPS定位:使用第三方库的函数来请求获取GPS定位数据。这些函数通常会返回设备的经度、纬度和其他相关位置信息。 6. 处理定位数据:将获取到的GPS定位数据与虚幻引擎中的逻辑进行对接。你可以将获取到的GPS数据转换为虚幻引擎中的坐标系统,并使用它们来定位场景或进行其他操作。 需要注意的是,具体的实现细节和函数调用方式可能因你选择的第三方库而有所不同。你需要参考相应地图服务提供商的文档和示例代码,以了解如何正确调用API接口和函数。此外,还要记得处理GPS定位过程中的错误和异常情况,以保证应用程序的稳定性和用户体验。 另外,也要注意遵守所选择地图服务提供商的使用条款和开发者政策,以确保你的应用程序在合规范围内使用地图服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值