百度地图集成
来源:互联网 发布:oa系统的网络拓扑图 编辑:程序博客网 时间:2024/06/05 20:43
首先到百度地图开发者中心下载相关Sdk和文件
在AndroidManifest.xml 中添加你的key和服务
<application> 中添加百度的Service和key,下面在百度地图集成中也有显示
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你自己的Key" /><service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
</application>
//首先在Application中初始化,记得在AndroidManifest.xml的application中使用name调用
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); SDKInitializer.initialize(getApplicationContext()); }}//在布局中使用百度地图
<com.baidu.mapapi.map.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true"></com.baidu.mapapi.map.MapView>
下面这个类是定位的,百度给的集成文档中不全面
public class LocationActivity extends AppCompatActivity { // 定位相关 MapView mMapView; BaiduMap mBaiduMap; // 定位相关 LocationClient mLocClient; //定位回调监听 public MyLocationListenner myListener = new MyLocationListenner(); //MyLocationData 可以理解成当前位置 private MyLocationData locData; // 是否首次定位 boolean isFirstLoc = true; private double mCurrentLat = 0.0; private double mCurrentLon = 0.0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location2); //如果定位不准确(到非洲几内亚湾),首先去设置App的应用权限,第二去检查sha1配置流程是否正确 mMapView = (MapView) findViewById(R.id.map); //拿到baiduMap mBaiduMap = mMapView.getMap(); // 开启定位图层 ,设置地图支持定位 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(this); //注册定位回调监听 mLocClient.registerLocationListener(myListener); //设置定位的细节 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); mLocClient.setLocOption(option); //这个开始去定位 mLocClient.start(); } /** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } //去拿经纬度 mCurrentLat = location.getLatitude(); mCurrentLon = location.getLongitude(); //显示当前位置 locData = new MyLocationData.Builder() //精确度 .accuracy(location.getRadius()) .latitude(location.getLatitude()) .longitude(location.getLongitude()) .build(); //把当前位置设置到map上 mBaiduMap.setMyLocationData(locData); //第一次进入的时候,设置地图的缩放级别 if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); //zoom设置地图缩放级别,越大的话地图的范围越大 builder.target(ll).zoom(18.0f); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } } } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); }}下面这个是导航的Activity,设置一个按钮跳转打开手机上的百度地图,如果没有安装,会提示你下载
//注意导航和定位需要设置不同的 MAIN 启动Activity
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:onClick="onClick" android:text="开始导航" />public class NavigationActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_navigation); } // 检查手机上是否安装了指定的软件 public static boolean isAvilible(Context context, String packageName) { //获取packagemanager final PackageManager packageManager = context.getPackageManager(); //获取所有已安装程序的包信息 List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0); //用于存储所有已安装程序的包名 List<String> packageNames = new ArrayList<String>(); //从pinfo中将包名字逐一取出,压入pName list中 if (packageInfos != null) { for (int i = 0; i < packageInfos.size(); i++) { String packName = packageInfos.get(i).packageName; packageNames.add(packName); } } //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE return packageNames.contains(packageName); } public void onClick(View view) { Intent intent; if (isAvilible(this, "com.baidu.BaiduMap")) {//传入指定应用包名 try { intent = Intent.getIntent("intent://map/direction?" + //"origin=latlng:"+"34.264642646862,108.95108518068&" + //起点 此处不传值默认选择当前位置 "destination=北京西站" + //终点 "&mode=driving&" + "region=中国" + "&src=新浪#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); this.startActivity(intent); } catch (URISyntaxException e) { } } else { //未安装 //market为路径,id为包名 //显示手机上所有的market商店 Toast.makeText(this, "您尚未安装百度地图", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap"); intent = new Intent(Intent.ACTION_VIEW, uri); this.startActivity(intent); } }}
阅读全文
0 0
- 百度地图集成
- 集成百度地图
- iOS- 集成百度地图
- 百度地图集成
- 百度地图集成
- 集成百度地图sdk
- 百度地图集成步骤
- 简单百度地图集成
- 百度地图集成(一)
- AndroidStudio集成百度地图
- 初步集成百度地图
- 百度地图集成
- 集成百度地图
- 集成百度地图---UnsatisfiedLinkError
- 百度地图集成
- 集成百度地图
- ios 百度地图集成
- 百度地图的集成
- Linux Device Model
- oracle-将另外一张表的列更新到本表的列
- zookeeper基本操作
- 239.Sliding windows maximum
- android 监听手机开机
- 百度地图集成
- CCF 201512-1 数位之和
- android系统action大全
- SIP穿越NAT的rport机制
- 安卓中获取文件路径以及批量获取目录下所有文件
- YOLO9000
- 调用android系统自带功能
- Ashx传过来的中文乱码问题
- Struts2原理