【Android】18.2 利用百度定位服务API实现位置跟踪
分类:C#、Android、VS2015;
创建日期:2016-03-04
一、简介
第3章已经介绍过百度定位SDK,这里再演示一遍其基本用法。
二、示例2—百度定位服务基本用法
运行截图

设计步骤
1、添加ch1802Main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/location_info"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<com.baidu.mapapi.map.TextureMapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</LinearLayout>
2、添加ch1802MainActivity.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.OS;
using Android.Widget;
using Android.Content.PM;
using Com.Baidu.Location;
using Com.Baidu.Mapapi.Map;
using Com.Baidu.Mapapi.Model; namespace MyDemos.SrcDemos
{
[Activity(Label = "【例18-2】百度定位服务基本用法",
ScreenOrientation = ScreenOrientation.Sensor,
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)]
public class ch1802MainActivity : Activity, IBDLocationListener
{
TextView locationInfo;
LocationClient mLocationClient;
TextureMapView mMapView;
BaiduMap mBaiduMap;
bool isFirstLoc = true;// 是否首次定位 protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ch1802Main);
locationInfo = FindViewById<TextView>(Resource.Id.location_info);
// 地图初始化
mMapView = FindViewById<TextureMapView>(Resource.Id.bmapView);
mBaiduMap = mMapView.Map;
// 开启定位图层
mBaiduMap.MyLocationEnabled = true;
// 定位初始化
mLocationClient = new LocationClient(this);
mLocationClient.RegisterLocationListener(this);
InitLocation();
mLocationClient.Start(); MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.Compass;
BitmapDescriptor mCurrentMarker = null;
mBaiduMap.SetMyLocationConfigeration(
new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));
}
private void InitLocation()
{
LocationClientOption option = new LocationClientOption();
//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.IsIgnoreKillProcess = false;
//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
option.EnableSimulateGps = true;
mLocationClient.LocOption = option;
} //实现接口
public void OnReceiveLocation(BDLocation p0)
{
// map view 销毁后不再处理新接收的位置
if (p0 == null || mMapView == null) return; #region 模拟位置
//注意:在手机上运行应注释掉这段代码,否则定位就没有意义了
p0 = new BDLocation();
p0.LocationDescribe = "模拟的位置,目的是为了在模拟器中查看运行效果";
p0.Radius = 50;
p0.Latitude = MainActivity.MyLatLng.Latitude;
p0.Longitude = MainActivity.MyLatLng.Longitude;
#endregion 模拟位置 MyLocationData locData = new MyLocationData.Builder()
.Accuracy(p0.Radius)
// 此处设置开发者获取到的方向信息,顺时针0-360
.Direction(100).Latitude(p0.Latitude)
.Longitude(p0.Longitude).Build();
mBaiduMap.SetMyLocationData(locData);
if (isFirstLoc)
{
isFirstLoc = false;
LatLng ll = new LatLng(p0.Latitude, p0.Longitude);
MapStatusUpdate u = MapStatusUpdateFactory.NewLatLng(ll);
mBaiduMap.AnimateMapStatus(u);
} StringBuilder sb = new StringBuilder();
sb.AppendLine("latitude : " + p0.Latitude);
sb.AppendLine("lontitude : " + p0.Longitude);
sb.AppendLine("radius : " + p0.Radius);
switch (p0.LocType)
{
case BDLocation.TypeGpsLocation:
// GPS定位结果
sb.AppendLine("speed : " + p0.Speed);// 单位:公里/每小时
sb.AppendLine("satellite : " + p0.SatelliteNumber);
sb.AppendLine("height : " + p0.Altitude);// 单位:米
sb.AppendLine("direction : " + p0.Direction);// 单位度
sb.AppendLine("addr : " + p0.AddrStr);
sb.AppendLine("describe : gps定位成功");
break;
case BDLocation.TypeNetWorkLocation:
// 网络定位结果
sb.AppendLine("网络定位结果(addr) : " + p0.AddrStr);
//运营商信息
sb.AppendLine("运营商信息(operationers) : " + p0.Operators);
sb.AppendLine("describe : 网络定位成功");
break;
case BDLocation.TypeOffLineLocation:
// 离线定位结果
sb.AppendLine("describe : 离线定位成功,离线定位结果也是有效的");
break;
case BDLocation.TypeServerError:
sb.AppendLine("describe : 服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");
break;
case BDLocation.TypeNetWorkException:
sb.AppendLine("describe : 网络不同导致定位失败,请检查网络是否通畅");
break;
case BDLocation.TypeCriteriaException:
sb.AppendLine("describe : 无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
break;
}
sb.AppendLine("locationdescribe: " + p0.LocationDescribe);// 位置语义化信息
locationInfo.Text = sb.ToString();
} protected override void OnPause()
{
mMapView.OnPause();
base.OnPause();
} protected override void OnResume()
{
mMapView.OnResume();
base.OnResume();
} protected override void OnDestroy()
{
// 退出时销毁定位
mLocationClient.Stop();
// 关闭定位图层
mBaiduMap.MyLocationEnabled = false;
mMapView.OnDestroy();
mMapView = null;
base.OnDestroy();
}
}
}
【Android】18.2 利用百度定位服务API实现位置跟踪的更多相关文章
- 定位服务API案例
定位服务API案例 要使用定位服务API,需要确保设备已经下载并安装了HMS Core服务组件,并将Location Kit的SDK集成到项目中. 指定应用权限 Android提供了两种位置权限: A ...
- 利用百度文字识别API识别图像中的文字
本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...
- [android学习]__使用百度地图开放api编写地图定位app
前言 在前面我已经记录关于如何使用百度地图api,以及如何配置相关的androidstudio配置了,接下来将记录如何使用百度地图api开发简单的地图定位apk,我将决定不定期持续更新本篇笔记,在每个 ...
- 安卓开发 利用百度识图api进行物体识别
前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...
- android开发对应高德地图定位服务进度一
进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...
- 安卓开发 利用百度识图api进行物体识别(java版)
之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...
- C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)
1.创建基础参数类 public static class BaiduConstParams { public const string PlaceApIv2Search = "http:/ ...
- Android Studio中利用JavaDoc生成项目API文档
1. 在Android Studio中的菜单项中点击Generate JavaDoc
- Android list刷新后仍然定位到原来的位置,解决。
问题: 有一个list,点击item时会做一些事情,然后重新加载数据,此时希望点击重新刷新后item还在原来的位置,而不是跳转到开头. 实现如下: 1.listview添加监听setOnScrollL ...
随机推荐
- 在AE10.1环境下调试其他版本的程序
不同人的可能使用的开发环境不一样,使用SDK版本也不一样,比如用ArcEngine9.3开发的程序在ArcEngine10.1下就不能运行,需要重新调试,才能运行. 这里的例子程序是其他网友在ArcE ...
- Python网络编程 - 请求地址上的文件并下载
我们用到了requests库,由于是第三方的,必须下载 如果是python 2.x用下面命令 pip install requests python 3.x用下面命令 easy_install req ...
- UML 之 数据流图(DFD)
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工 ...
- 自定义self.editButtonItem 改变自定义self.editButtonItem的背景图片
一: // UIButton *editSome; 为全局变量,已开启ARC; editSome = [UIButton buttonWithType:UIButtonTypeCustom]; edi ...
- iOS调试证书/公布证书制作
当已经注冊过applied 开发人员账号后,而且进行付款了,那么接下来就是证书制作了 1.登录membercenter https://developer.apple.com/membercenter ...
- maven Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4
maven Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4 CreateTime--201 ...
- 〖Linux〗Ubuntu13.10中使用虚拟机对MTK手机进行线刷
最近一个同学把一台MTK手机刷坏了,在我的笔记本电脑上没有WindowsXp操作系统: 而在MTK线刷过程中,最好的刷机系统便是WindowsXP3,于是有了想在Linux中直接开启XP虚拟机来刷机的 ...
- [Done]ftp使用小结
基本命令: put 本地文件名 ftp文件名 get ftp文件名 本地文件名 mget ftp文件多个文件 注意使用该命令时先用 lcd切换本地路径 还有一些常用的 ls mkdir 等,参考 ...
- mariadb多实例搭建
测试环境基于centos7.2,腾讯云实验室,学习搭建! https://www.qcloud.com/developer 多实例mysql,能更加理解mysql安装的基本过程!及简单使用... ma ...
- document.body、document.documentElement和window获取视窗大小的差别
来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗体大小的三种方法(浏览器的视口,不包含工具栏和滚动栏). 对于In ...