百度地图定位并显示地图

到jar包

配置文件

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="自己根据包名申请" />

<service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote"></service>

权限

<!-- 百度权限 --><!-- 这个权限用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 这个权限用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><!-- 用于读取手机当前的状态 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 访问网络,网络定位需要上网 --><uses-permission android:name="android.permission.INTERNET" /><!-- SD卡读取权限,用户写入离线定位数据 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

在mai中建立jniLibs文件夹


map_location = (TextView) findViewById(R.id.map_location);mapview = (MapView) findViewById(R.id.mapview);
private void setbaidu() {
        mBaiduMap = mapview.getMap();

        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        mBaiduMap.setTrafficEnabled(true);

        mLocationClient = new LocationClient(getApplicationContext());
        BDLocationListener b = new BDLocationListener() {

            public void onReceiveLocation(BDLocation location) {
                //Receive Location
                StringBuffer sb = new StringBuffer(256);
                sb.append("time : ");
                sb.append(location.getTime());
                sb.append("\nerror code : ");
                sb.append(location.getLocType());
                sb.append("\nlatitude : ");
                sb.append(location.getLatitude());
                sb.append("\nlontitude : ");
                sb.append(location.getLongitude());
                sb.append("\nradius : ");
                sb.append(location.getRadius());
                if (location.getLocType() == BDLocation.TypeGpsLocation){// GPS定位结果
                    sb.append("\nspeed : ");
                    sb.append(location.getSpeed());// 单位:公里每小时
                    sb.append("\nsatellite : ");
                    sb.append(location.getSatelliteNumber());
                    sb.append("\nheight : ");
                    sb.append(location.getAltitude());// 单位:米
                    sb.append("\ndirection : ");
                    sb.append(location.getDirection());// 单位度
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    sb.append("\ndescribe : ");
                    sb.append("gps定位成功");

                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){// 网络定位结果
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    //运营商信息
                    sb.append("\noperationers : ");
                    sb.append(location.getOperators());
                    sb.append("\ndescribe : ");
                    sb.append("网络定位成功");
                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果
                    sb.append("\ndescribe : ");
                    sb.append("离线定位成功,离线定位结果也是有效的");
                } else if (location.getLocType() == BDLocation.TypeServerError) {
                    sb.append("\ndescribe : ");
                    sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因");
                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                    sb.append("\ndescribe : ");
                    sb.append("网络不同导致定位失败,请检查网络是否通畅");
                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                    sb.append("\ndescribe : ");
                    sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
                }
                sb.append("\nlocationdescribe : ");
                sb.append(location.getLocationDescribe());// 位置语义化信息
                List<Poi> list = location.getPoiList();// POI数据
                if (list != null) {
                    sb.append("\npoilist size = : ");
                    sb.append(list.size());
                    for (Poi p : list) {
                        sb.append("\npoi= : ");
                        sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
                    }
                }
                Log.i("BaiduLocationApiDem", sb.toString());
                String dizhi = location.getAddrStr();
                System.out.println(dizhi + "=========");
                map_location.setText("我在" + dizhi);
                //检查覆盖物是否存在,存在则修改,否则则添加
//                location.getLatitude();
//                location.getLongitude();

                //定义Maker坐标点
                LatLng point = new LatLng( location.getLatitude(),  location.getLongitude());
//构建Marker图标
                BitmapDescriptor bitmap = BitmapDescriptorFactory
                        .fromResource(R.drawable.icon_gcoding);
//构建MarkerOption,用于在地图上添加Marker
                OverlayOptions option = new MarkerOptions()
                        .position(point)
                        .icon(bitmap);
//在地图上添加Marker,并显示
                mBaiduMap.addOverlay(option);

            }
        };

        mLocationClient.registerLocationListener(b); // 注册监听函数
        initLocation();
        mLocationClient.start();
    }
private void initLocation() {    LocationClientOption option = new LocationClientOption();    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系int span = 1000;    option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要option.setOpenGps(true);// 可选,默认false,设置是否使用gpsoption.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要mLocationClient.setLocOption(option);}

@Overrideprotected void onDestroy() {    super.onDestroy();    //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mapview.onDestroy();}@Overrideprotected void onResume() {    super.onResume();    //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mapview.onResume();}@Overrideprotected void onPause() {    super.onPause();    //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mapview.onPause();}


private void setbaidu() {        mBaiduMap = mapview.getMap();

        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);        mBaiduMap.setTrafficEnabled(true);

        mLocationClient = new LocationClient(getApplicationContext());        BDLocationListener b = new BDLocationListener() {

            public void onReceiveLocation(BDLocation location) {                //Receive LocationStringBuffer sb = new StringBuffer(256);                sb.append("time : ");                sb.append(location.getTime());                sb.append("\nerror code : ");                sb.append(location.getLocType());                sb.append("\nlatitude : ");                sb.append(location.getLatitude());                sb.append("\nlontitude : ");                sb.append(location.getLongitude());                sb.append("\nradius : ");                sb.append(location.getRadius());                if (location.getLocType() == BDLocation.TypeGpsLocation){// GPS定位结果sb.append("\nspeed : ");                    sb.append(location.getSpeed());// 单位:公里每小时sb.append("\nsatellite : ");                    sb.append(location.getSatelliteNumber());                    sb.append("\nheight : ");                    sb.append(location.getAltitude());// 单位:米sb.append("\ndirection : ");                    sb.append(location.getDirection());// 单位度sb.append("\naddr : ");                    sb.append(location.getAddrStr());                    sb.append("\ndescribe : ");                    sb.append("gps定位成功");

                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){// 网络定位结果sb.append("\naddr : ");                    sb.append(location.getAddrStr());                    //运营商信息sb.append("\noperationers : ");                    sb.append(location.getOperators());                    sb.append("\ndescribe : ");                    sb.append("网络定位成功");                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果sb.append("\ndescribe : ");                    sb.append("离线定位成功,离线定位结果也是有效的");                } else if (location.getLocType() == BDLocation.TypeServerError) {                    sb.append("\ndescribe : ");                    sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因");                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {                    sb.append("\ndescribe : ");                    sb.append("网络不同导致定位失败,请检查网络是否通畅");                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {                    sb.append("\ndescribe : ");                    sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");                }                sb.append("\nlocationdescribe : ");                sb.append(location.getLocationDescribe());// 位置语义化信息List<Poi> list = location.getPoiList();// POI数据if (list != null) {                    sb.append("\npoilist size = : ");                    sb.append(list.size());                    for (Poi p : list) {                        sb.append("\npoi= : ");                        sb.append(p.getId() + " " + p.getName() + " " + p.getRank());                    }                }                Log.i("BaiduLocationApiDem", sb.toString());                String dizhi = location.getAddrStr();                System.out.println(dizhi + "=========");                map_location.setText("我在" + dizhi);                //检查覆盖物是否存在,存在则修改,否则则添加//                location.getLatitude();//                location.getLongitude();

                //定义Maker坐标点LatLng point = new LatLng( location.getLatitude(),  location.getLongitude());//构建Marker图标BitmapDescriptor bitmap = BitmapDescriptorFactory                        .fromResource(R.drawable.icon_gcoding);//构建MarkerOption,用于在地图上添加MarkerOverlayOptions option = new MarkerOptions()                        .position(point)                        .icon(bitmap);//在地图上添加Marker,并显示mBaiduMap.addOverlay(option);

            }        };

        mLocationClient.registerLocationListener(b); // 注册监听函数initLocation();        mLocationClient.start();    }
时间: 2024-11-03 13:05:15

百度地图定位并显示地图的相关文章

苹果地图定位和显示区域

// // ViewController.m // mapdemo001 // // Created by apple on 14-4-28. // Copyright (c) 2014年 apple. All rights reserved. // #import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController () <MKMapViewDelegate> { MKM

iOS定位服务与地图开发(4)---显示地图

iOS 6之前,苹果使用的是谷歌地图,iOS 6之后,苹果使用了自己的地图(国内好像用的是高德地图),但是API编程接口与iOS 5相比没有太大变化. iOS 应用程序中使用Map Kit API开发地图应用程序,使用MKMapView类作为地图显示视图,其委托协议是MKMapViewDelegate. 1.显示地图: .h文件中代码 #import <MapKit/MapKit.h> @interface YXCViewController <MKMapViewDelegate>

百度地图定位,标注以及地图中心点问题

关于百度地图的相关配置以及库的合并方法请查看官方文档,上面说的很详细, 下面是在配置好的基础上进行的. 1.引入百度地图的库的头文件 //百度地图    #import <BaiduMapAPI/BMapKit.h>    #import <BaiduMapAPI/BMKMapView.h> 2.我是直接使用xib进行开发的,我直接让当前显示地图的view继承自BMKMapView,建立属性连接 @property (strong, nonatomic) IBOutlet BMKM

点击列表信息,arcgis地图 定位并显示详细信息

//地图定位2 x,y--by zy function gotoMap(x, y, name, content, dizhi) { //清除上一次显示 myMap.graphics.clear(); var pt = new esri.geometry.Point([x, y]); var pictureMarkerSymbol = new esri.symbol.PictureMarkerSymbol("/img/DW.png", 20, 20); var g = new esri.

百度地图根据位置显示地图

mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); LatLng ll = new LatLng(36.000000,120.000000); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u);

iOS开发 定位服务与地图

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

Arcgis andoid开发之应用百度地图接口实现精准定位与显示

怀着激动.兴奋的心情,在这个漫天柳絮的季节写下了这片博文,为什么呢,因为困扰我很久的一个技术性的问题得到了解决,发次博文,供大家参观.学习,同时,也以慰藉我长期困扰的心情,好了,废话不再,言归正传,看看这到底是个什么东西? 首先,简单地介绍一下功能:1.离线地图的加载:2.GPS的定位与显示.文字比较模糊,看看实际的效果图: 功能其实很简单,下面解释一下实现思路: 1.布局 <?xml version="1.0" encoding="utf-8"?> &

百度地图开发定位与显示Demo(Android)

百度地图给我们提供了非常丰富的API供我们进行二次开发.百度地图的SDK与定位SDK在今年6月份进行了更新.地图更新为3.0,定位更新为4.2.百度说:这次更新对接口有了较大部分的调整,与之前版本不兼容.本篇博文基于以上最新版本的API提供一个小例子:获取自己当前的经纬度坐标,并且显示在地图上.这里只给出核心代码,其他KEY的引入,地图控件的添加,权限的声明,定位服务的声明可在百度地图API官网(http://developer.baidu.com/map/sdkandev-download.h

Android使用百度地图出现闪退及定位时显示蓝屏问题

 目录 1.Android使用百度地图出现闪退 2.Android使用百度地图定位出现蓝屏问题     1.Android使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置 <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="D9Lh8MrrLMUuXdWMU8tRLtDsta6PoaYN" /> 但是