androidstudio腾讯地图集成定位绘制行走过的路线
来源:互联网 发布:淘宝客开源源码 编辑:程序博客网 时间:2024/04/29 22:37
之前项目中集成的是百度地图,然后后面需求改了换成腾讯地图了,个人感觉腾讯地图比百度地图更容易集成,但是腾讯的API文档看着费劲,下面就看一下腾讯地图的流程
一、首先肯定去官方申请key和下载官方demo,这个不多说
然后在配置文件中application下加上
<meta-data android:name="TencentMapSDK" android:value="申请到的key"/>二,jar包和so文件
从腾讯地图开放平台下载的demo中获取到jar包和so文件,将jar包复制到libs文件夹下,然后add as Library..,so文件处理是在main文件夹下建一个jniLibs,so文件拷贝到文件夹下
三,添加权限
包括访问jps,网络,网络定位等
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!-- 通过GPS得到精确位置 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 通过网络得到粗略位置 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 修改WiFi状态. 发起WiFi扫描, 需要WiFi信息用于网络定位 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><!-- 访问网络的变化, 需要某些信息用于网络定位 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
这是xml文件中
<
com.tencent.tencentmap.mapsdk.maps.MapView
android:id
=
"@+id/map"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
/>
这样的话在自己项目中就能看到地图可以显示了
五.下面看java文件中的代码
mMapView = (MapView) findViewById(R.id.map);
看名字,mapview肯定是view控制器,而Tencentmap类是地图的主类tencentMap = mMapView.getMap();//设置地图类型为卫星图tencentMap.setMapType(TencentMap.MAP_TYPE_SATELLITE);
下面看定位然后把定位到的经纬度存储到集合中,然后将点的集合在地图上添加polyline画出路线
//定位资源private DemoLocationSource locationSource;
/** *在地图中设置定位资源,保证定位参数传入地图中 *///设置显示缩放控件tencentMap.getUiSettings().setZoomControlsEnabled(false);locationSource = new DemoLocationSource(this);//设置我的位置信息来源tencentMap.setLocationSource(locationSource);//设置是否显示我的位置tencentMap.setMyLocationEnabled(true);
/** * 腾讯地图定位类,并定位到当前位置,保存时时定位到的点 */class DemoLocationSource implements LocationSource, TencentLocationListener { private Context mContext; private OnLocationChangedListener mChangedListener; private TencentLocationManager locationManager; private TencentLocationRequest locationRequest; public DemoLocationSource(Context context) { mContext = context; locationManager = TencentLocationManager.getInstance(mContext); locationRequest = TencentLocationRequest.create(); locationRequest.setInterval(4000); //请求周期 } @Override public void onLocationChanged(TencentLocation tencentLocation, int i, String s) { if (i == TencentLocation.ERROR_OK && mChangedListener != null) { Log.e("maplocation", "location: " + tencentLocation.getCity() + " " + tencentLocation.getProvider()); Log.e("当前的点坐标****", "aaaaaaaaaaaa: " + tencentLocation.getLatitude() + " " + tencentLocation.getLongitude()); //当前点 LatLng latLng = new LatLng(tencentLocation.getLatitude(),tencentLocation.getLongitude()); Location location = new Location(tencentLocation.getProvider()); location.setLatitude(tencentLocation.getLatitude()); location.setLongitude(tencentLocation.getLongitude()); location.setAccuracy(tencentLocation.getAccuracy()); //定位到当前位置并且设置缩放级别 tencentMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(tencentLocation.getLatitude(),tencentLocation.getLongitude()))); if(isStart) { if(lalangList.size() == 0) { lalangList.add(latLng); }else { if(lalangList.get(lalangList.size()-1).latitude == latLng.latitude && lalangList.get(lalangList.size()-1).longitude == latLng.longitude) { }else { lalangList.add(latLng); } } } mChangedListener.onLocationChanged(location); } } @Override public void onStatusUpdate(String arg0, int arg1, String arg2) { } @Override public void activate(OnLocationChangedListener arg0) { mChangedListener = arg0; int err = locationManager.requestLocationUpdates(locationRequest, this); switch (err) { case 1: setTitle("设备缺少使用腾讯定位服务需要的基本条件"); break; case 2: setTitle("manifest 中配置的 key 不正确"); break; case 3: setTitle("自动加载libtencentloc.so失败"); break; default: break; } } @Override public void deactivate() { // TODO Auto-generated method stub locationManager.removeUpdates(this); mContext = null; locationManager = null; locationRequest = null; mChangedListener = null; } public void onPause() { locationManager.removeUpdates(this); } public void onResume() { locationManager.requestLocationUpdates(locationRequest, this); }}
获取到的定位点集合后就是画了,可以自己设置几秒绘制一次
if(lalangList.size() >= 2) { PolylineOptions polyline = new PolylineOptions(); polyline.width(8).color(0xAAFF0000).setLatLngs(lalangList); tencentMap.addPolyline(polyline);}
0 0
- androidstudio腾讯地图集成定位绘制行走过的路线
- AndroidStudio百度地图定位功能的集成
- Android 高德地图集成 地图展示+定位+路线规划+各种原有图标的隐藏处理
- AndroidStudio 中使用 百度地图 <三> 百度地图的定位的集成和使用,个人摘要
- 百度地图之行走路线的标识搜索
- 调用高德地图,百度地图,腾讯地图,苹果地图路线规划(无需集成SDK)
- Unity LineRenderer绘制物体行走路线
- 简易绘制地图路线
- 地图绘制路线
- AndroidStudio集成百度地图
- 腾讯地图定位demo
- cocos2d-x 如何实现角色在地图中的不同高低台阶行走的路线控制
- 腾讯地图api(1):定位添加覆盖物以及步行路线
- Android开发-----定位功能的实现----腾讯地图定位
- 地图定位 绘制公交线路
- 利用高德地图和腾讯地图的详细地址定位
- 高德定位地图的集成
- 百度地图之六标注行走路线搜索
- AFNetWork请求Cache问题
- spring mvc与html中处理引用js等静态文件的问题
- 知乎大神关于高级ios进阶
- Windows之修改鼠标或触控板的滚轮方向
- redisUtil
- androidstudio腾讯地图集成定位绘制行走过的路线
- tjut 3508
- spring-boot-starter-logging logback配置之<configuration><logger>标签详解
- vCenter 部件关系简介 & 网络原理
- 动态链接库创建步骤
- 负载均衡-分布式缓存 算法调度
- iOS oc语言的命名规范
- 天纵智能软件快速开发平台日程安排插件
- Delphi : 自动升级组件AutoUpgrader简单教程(初学者)