百度地图Android,v4_5_0.so
来源:互联网 发布:福利彩票预测软件 编辑:程序博客网 时间:2024/05/17 18:46
最近使用百度地图实现了定位及查看周边活动的功能整理一下可用的资料。
一、位置监听及缩放级别设置
/** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || tmapView == null) { return; } //获取位置信息 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); //首次定位,判断设置缩放级别 if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(13); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } } }
二、地图的配置及点击事件的监听
private void init() { // 地图初始化 mBaiduMap = tmapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); //普通模式 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 定位初始化 MyLocationListenner myListener = new MyLocationListenner(); LocationClient mLocClient = new LocationClient(this); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 //option.setScanSpan(10000);//重定位时间间隔,单位毫秒 mLocClient.setLocOption(option); mLocClient.start(); //设置模式,这里是跟随模式 MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.FOLLOWING; mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, null)); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.drawable.ic_adress_nor); //创建OverlayOptions的集合 //设置坐标点 LatLng point1 = new LatLng(31.05235, 121.380338); LatLng point2 = new LatLng(31.077246, 121.414977); //创建OverlayOptions属性 OverlayOptions option1 = new MarkerOptions() .position(point1) .icon(bitmap); OverlayOptions option2 = new MarkerOptions() .position(point2) .icon(bitmap); //将OverlayOptions添加到list options1.add(option1); options1.add(option2); mBaiduMap.clear(); //在地图上批量添加 mBaiduMap.addOverlays(options1); mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { //创建InfoWindow展示的view button = new Button(getApplicationContext()); button.setBackgroundResource(R.drawable.bg_map); button.setText("点击了"); //定义用于显示该InfoWindow的坐标点 LatLng pt = new LatLng(marker.getPosition().latitude, marker.getPosition().longitude); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_adress); marker.setIcon(bitmap); //弹窗点击事件 InfoWindow.OnInfoWindowClickListener listener = new InfoWindow.OnInfoWindowClickListener() { @Override public void onInfoWindowClick() { mBaiduMap.hideInfoWindow(); button.setVisibility(View.INVISIBLE); BasesDetailActivity_.intent(MapViewActivity.this).start(); } }; BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(button); //创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量 InfoWindow mInfoWindow = new InfoWindow(bitmapDescriptor, pt, -47, listener); button.setVisibility(View.VISIBLE); //显示InfoWindow mBaiduMap.showInfoWindow(mInfoWindow); //返回值默认false,改为true return true; } }); }
三、设置中心点
//设置中心点 LatLng cenpt = new LatLng(31.063137, 121.401378); //设定中心点坐标 MapStatus mMapStatus = new MapStatus.Builder()//定义地图状态 .target(cenpt) .build(); //定义MapStatusUpdate对象,以便描述地图状态将要发生的变化 MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus); mBaiduMap.setMapStatus(mMapStatusUpdate);//改变地图状态
四、调用百度地图app实现路线规划(传经纬度)
/** * 注意下面的起终点坐标都是百度坐标 */ void setUpBaiduAPPByLoca() { try { Intent intent = Intent.getIntent("intent://map/direction?origin=latlng:" + LATITUDE_QIDIAN + "," + LONGTITUDE_QIDIAN + "|name:万家丽国际Mall&destination=latlng:" + LATITUDE_ZHONGDIAN + "," + LONGTITUDE_ZHONGDIAN + "|name:东郡华城广场|A座&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); if (isInstallByread("com.baidu.BaiduMap")) { startActivity(intent); Log.e(TAG, "百度地图客户端已经安装"); } else { Log.e(TAG, "没有安装百度地图客户端"); } } catch (URISyntaxException e) { e.printStackTrace(); } } /** * 判断是否安装目标应用 * * @param packageName 目标应用安装后的包名 * @return 是否已安装目标应用 */ private boolean isInstallByread(String packageName) { return new File("/data/data/" + packageName).exists(); }
五、根据两点经纬度计算距离(单位km)
// 计算两点距离 private final double EARTH_RADIUS = 6378137.0; private double gps2km(double lat_a, double lng_a, double lat_b, double lng_b) { double radLat1 = (lat_a * Math.PI / 180.0); double radLat2 = (lat_b * Math.PI / 180.0); double a = radLat1 - radLat2; double b = (lng_a - lng_b) * Math.PI / 180.0; double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; s = Math.round(s * 10000) / 10000 / 1000; return s; }
六、注意,生命周期的监听(缺少这部分会导致mark点击事件实效)
@Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 tmapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 tmapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 tmapView.onPause(); }
阅读全文
0 0
- 百度地图Android,v4_5_0.so
- Android百度地图实践 文件liblocSDK.so
- android studio 百度地图 .so文件错误 完美解决
- Android Studio关于百度地图so库的配置问题
- Android Studio关于百度地图so库的配置问题
- 百度地图Android SDK So文件加载失败原因
- 百度地图so库文件
- 百度地图libgnustl_shared.so" not found 问题
- 集成百度地图找不到so库
- 百度地图.so文件过大 解决方案
- 百度地图lib/libgnustl_shared.so" not found
- android JNI调用百度地图API,.so文件总是被自动删除的问题
- eclipse中集成百度地图的项目导入Android studio加入so文件的问题
- Android Studio百度地图入门(导入jar与so文件)
- android 调用百度地图SDK,出现 not found the liblocSDK4d.so 解决方法
- android百度地图:地图定位
- android 百度地图应用
- Android 百度地图初学
- C++读取BMP位图数据的方法
- 树状数组习题:棋子等级
- Android定时广播和定时服务两种实现方式
- C# 浅谈ThreadPool -- 上篇(Enqueue)
- Linux Git常见命令
- 百度地图Android,v4_5_0.so
- 数据挖掘中常用的数据清洗方法有哪些?
- hahahaha
- Matlab 之 im2col 函数用法
- 桶排序java
- 【DevExpress v17.2新功能预告】DevExpress ASP.NET Scheduler新的自适应功能
- 相机成像原理(四个坐标系转换)
- python自动化环境配置,appium,sdk,python,selenium等环境配置
- 剑指offer-跳台阶