Xamarin只言片语4——Xamarin.Android百度地图绑定
先下载百度地图http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool
百度地图绑定库文件
新建一个BindingsLibrary项目,并把刚下载的BaiduLBS_Android.jar添加到项目的Jars文件夹下,更改BaiduLBS_Android.jar的属性中的”生成操作”属性为EmbeddedJar
生成些项目,如果遇到这样的错误:
VersionInfo”: 成员名不能与它们的封闭类型相同
打开项目中的Transforms的Metadate.xml,在<metadata>节点添加如下代码
< attrpath = " /api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO'] "name = " name " > VersionInfos </ attr >
因为在C#中不能定义和类名相同的类成员(构造函数除外)
创建andorid项目
在项目中创建一个libs文件夹,把下载的百度地图包中的.so文件添加进来,并在属性上设置成AndroidNativeLibrary
添加权限和设置百度地图访问应用Key
<application android:label="BaiduMapDemo" android:icon="@drawable/Icon"><meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="这个需要注册百度开放平台申请Android的Key" /></application><uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" /><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!-- 用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 在布局文件中添加地图控件(注意大小写:)<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" />
C#代码如下
using Android.App; using Android.Content; using Android.Runtime; using Android.Widget; using Android.OS; using Com.Baidu.Mapapi.Map; using Com.Baidu.Mapapi; using Android.Locations; using Com.Baidu.Mapapi.Model;namespace BaiduMapDemo {[Activity(Label = "BaiduMapDemo", MainLauncher = true, Icon = "@drawable/icon")]public class MainActivity : Activity, ILocationListener//为安卓定位接口{ LocationManager locMgr;MapView mMapView ;BaiduMap mBaiduMap ;protected override void OnCreate(Bundle bundle){base.OnCreate(bundle);//初台化地图,注意位置,在SetContentView前SDKInitializer.Initialize(Application.Context);SetContentView(Resource.Layout.Main);mMapView = FindViewById<MapView>(Resource.Id.bmapView);mBaiduMap = mMapView.Map;//普通地图mBaiduMap.MapType = BaiduMap.MapTypeNormal;}protected override void OnResume(){base.OnResume();locMgr = GetSystemService(Context.LocationService) as LocationManager;Criteria locationCriteria = new Criteria();locationCriteria.Accuracy = Accuracy.Coarse;locationCriteria.PowerRequirement = Power.Medium;locationCriteria.AltitudeRequired = false;//海拔locationCriteria.BearingRequired = false;//方位/方向locationCriteria.SpeedRequired = false;//速度locationCriteria.CostAllowed = true;//成本var locationProvider = locMgr.GetBestProvider(locationCriteria, true);if (locationProvider != null){locMgr.RequestLocationUpdates(locationProvider, 2000, 1, this);}else{Toast.MakeText(this, "The Network Provider does not exist or is not enabled!", ToastLength.Long).Show();}}protected override void OnStart(){base.OnStart();}protected override void OnStop(){base.OnStop();}protected override void OnPause(){base.OnPause();locMgr.RemoveUpdates(this);}/// <summary>/// 实现ILocationListener中方法,位置改变/// </summary>/// <param name="location"></param>public void OnLocationChanged(Location location){var point = new LatLng(location.Latitude, location.Longitude);//使地图移动到当前位置MapStatus mMapStatus = new MapStatus.Builder().Target(point).Zoom(12).Build();//定义MapStatusUpdate对象,以便描述地图状态将要发生的变化 MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.NewMapStatus(mMapStatus);//改变地图状态 mBaiduMap.SetMapStatus(mMapStatusUpdate);//创建当前位置Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory.FromResource(Resource.Drawable.icon_gcoding);//构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions().InvokePosition(point).InvokeIcon(bitmap);//在地图上添加Marker,并显示 mBaiduMap.AddOverlay(option);}/// <summary>/// 实现ILocationListener中方法/// </summary>/// <param name="provider"></param>public void OnProviderDisabled(string provider){ }/// <summary>/// 实现ILocationListener中方法/// </summary>/// <param name="provider"></param>public void OnProviderEnabled(string provider){ }/// <summary>/// 实现ILocationListener中方法/// </summary>/// <param name="provider"></param>/// <param name="status"></param>/// <param name="extras"></param>public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras){ }} }
Xamarin只言片语4——Xamarin.Android百度地图绑定相关推荐
- android地图入门,android 百度地图入门01 (史上最详没有之一)
最近一直和百度地图打交道,写几篇博客记录一下吧,目前最新版是4.0的 ,之前我用的是3.7的, 就以4.0的为例说一下最基本的配置流程吧. 一.准备工作 1.申请一个百度地图开发者账户--地址:htt ...
- Android百度地图之位置定位和附近查找代码简单实现 (上)
很长时间没有做Android相关知识了,闲暇之余再弄了弄最新的百度地图API,主要是进行百度地图附近餐馆查找功能来练练手,同时熟悉下最新的API教程.文章比较基础,也希望对你有所帮助~参考前文: ...
- Android百度地图API使用教程
课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...
- Android百度地图之周边雷达
android–百度地图周边雷达实战 在过这块的时候大概花了我3天的时间,其中的曲折这里我就不吐槽了,没有坑的世界就不精彩.自己造轮子就是这样,浪费时间,消磨耐性.废话又多说了,好了,开干. 首先先把 ...
- Android 百度地图API实现实时定位
首先需要注册百度地图的开发者账号,选择个人开发者就可以.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 然后获取AK这个在网上都有可以自己查看.下载.配置sdk可以 ...
- android 百度地图开发 别人用不了,Android百度地图开发的那些不足之处
Android百度地图开发的那些不足之处,最近做的项目中百度地图是很重要的一个模块,其中实现了定位.自定义Marker图标.线路规划.SuggestionSearch检索.地图截图以及导航等功能.因为 ...
- android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...
目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...
- android 百度地图 在线建议查询,Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能...
目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.在线建议查询.短串分享. 本篇博客将先介绍POI检索和在线建议查询(在地图地位功能基础上实现的,还不知道定位的童靴 ...
- [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题
最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络 ...
最新文章
- 博士生4篇高分论文参加答辩,却遭评委批评:你写的太多了
- php addall,ThinkPHP3.2框架使用addAll()批量插入数据的方法
- Shape Drawable
- C#封装类似任务管理器CPU使用记录图
- 再向“乡镇青年”下沉,“资讯界拼多多”趣头条也难成为另一个拼多多
- Cisco 2950 系列交换机实例配置
- Qt-Threads和QObjects详解
- VisualStudio解决方案配置Debug和Release选项
- 计算机科学与技术专业分多少学科,计算机科学与技术专业,电子科学与技术有什么分别?...
- 如何从我的eclipse项目中删除javascript验证?
- 小程序和vue语法对比_商城小程序对比传统电商的优势如何?
- Spring源码之bean的加载(三)从bean中获取对象
- tensorflow用c语言,安装TensorFlow C语言版
- dhtmlxGantt 版本比较-Crack
- 税务会计实务【14】
- 回收站的文件删了怎么恢复,回收站文件恢复的两种方法
- 知道RSS的人越少,我就越希望它能被人知道!
- Python照片合成
- QNAP 威联通 NAS的个人使用经验 篇一:设备展示(TS-451)及基础知识
- 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?
热门文章
- html怎么用chrome测试,通过chrome调试器测试了解浏览器解析和渲染HTML的过程
- mysql 列目录_Linux ls命令:查看目录下文件
- python post请求rsa加密_Python的加密方式:RSA加密
- mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询
- python两个数相加时_两数相加 leetcode Python
- 计算机动画整个的发展历史,三维动画的发展史
- 方欣科技算法题面试:蛇形矩阵
- 这样准备面试,薪资比预期至少多拿20%!
- JAVA16版本.JDK16即将发布,你准备好了吗?
- Maven projects need to be imported反复弹出如何办?