先下载百度地图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”: 成员名不能与它们的封闭类型相同

打开项目中的TransformsMetadate.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

wKiom1YxcmmhMxEhAANNWXpvrg4488.jpg

添加权限和设置百度地图访问应用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百度地图绑定相关推荐

  1. android地图入门,android 百度地图入门01 (史上最详没有之一)

    最近一直和百度地图打交道,写几篇博客记录一下吧,目前最新版是4.0的 ,之前我用的是3.7的, 就以4.0的为例说一下最基本的配置流程吧. 一.准备工作 1.申请一个百度地图开发者账户--地址:htt ...

  2. Android百度地图之位置定位和附近查找代码简单实现 (上)

    很长时间没有做Android相关知识了,闲暇之余再弄了弄最新的百度地图API,主要是进行百度地图附近餐馆查找功能来练练手,同时熟悉下最新的API教程.文章比较基础,也希望对你有所帮助~参考前文:   ...

  3. Android百度地图API使用教程

    课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...

  4. Android百度地图之周边雷达

    android–百度地图周边雷达实战 在过这块的时候大概花了我3天的时间,其中的曲折这里我就不吐槽了,没有坑的世界就不精彩.自己造轮子就是这样,浪费时间,消磨耐性.废话又多说了,好了,开干. 首先先把 ...

  5. Android 百度地图API实现实时定位

    首先需要注册百度地图的开发者账号,选择个人开发者就可以.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 然后获取AK这个在网上都有可以自己查看.下载.配置sdk可以 ...

  6. android 百度地图开发 别人用不了,Android百度地图开发的那些不足之处

    Android百度地图开发的那些不足之处,最近做的项目中百度地图是很重要的一个模块,其中实现了定位.自定义Marker图标.线路规划.SuggestionSearch检索.地图截图以及导航等功能.因为 ...

  7. android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...

    目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...

  8. android 百度地图 在线建议查询,Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能...

    目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.在线建议查询.短串分享. 本篇博客将先介绍POI检索和在线建议查询(在地图地位功能基础上实现的,还不知道定位的童靴 ...

  9. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

        最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络 ...

最新文章

  1. 博士生4篇高分论文参加答辩,却遭评委批评:你写的太多了
  2. php addall,ThinkPHP3.2框架使用addAll()批量插入数据的方法
  3. Shape Drawable
  4. C#封装类似任务管理器CPU使用记录图
  5. 再向“乡镇青年”下沉,“资讯界拼多多”趣头条也难成为另一个拼多多
  6. Cisco 2950 系列交换机实例配置
  7. Qt-Threads和QObjects详解
  8. VisualStudio解决方案配置Debug和Release选项
  9. 计算机科学与技术专业分多少学科,计算机科学与技术专业,电子科学与技术有什么分别?...
  10. 如何从我的eclipse项目中删除javascript验证?
  11. 小程序和vue语法对比_商城小程序对比传统电商的优势如何?
  12. Spring源码之bean的加载(三)从bean中获取对象
  13. tensorflow用c语言,安装TensorFlow C语言版
  14. dhtmlxGantt 版本比较-Crack
  15. 税务会计实务【14】
  16. 回收站的文件删了怎么恢复,回收站文件恢复的两种方法
  17. 知道RSS的人越少,我就越希望它能被人知道!
  18. Python照片合成
  19. QNAP 威联通 NAS的个人使用经验 篇一:设备展示(TS-451)及基础知识
  20. 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

热门文章

  1. html怎么用chrome测试,通过chrome调试器测试了解浏览器解析和渲染HTML的过程
  2. mysql 列目录_Linux ls命令:查看目录下文件
  3. python post请求rsa加密_Python的加密方式:RSA加密
  4. mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询
  5. python两个数相加时_两数相加 leetcode Python
  6. 计算机动画整个的发展历史,三维动画的发展史
  7. 方欣科技算法题面试:蛇形矩阵
  8. 这样准备面试,薪资比预期至少多拿20%!
  9. JAVA16版本.JDK16即将发布,你准备好了吗?
  10. Maven projects need to be imported反复弹出如何办?