Mono For Android中完美使用百度地图SDK(v2.1.2&v2.1.3)(转)
在Xamarin Mono For Android的开发中,如果要使用第三方的jar,就必须进行绑定。通过创建Java Bindings Library项目来自动生成C#到java的代码映射代码,最终产生一个dll程序集,我们调用这个程序集中的代码就可以调用jar中对应的代码。

++++++++++++++++++++++++++++++++++++++++++++++++
Xamarin Mono 移动跨平台开发群 230865920
欢迎大家进来交流
++++++++++++++++++++++++++++++++++++++++++++++++
百度地图官方Android SDK下载地址:http://developer.baidu.com/map/sdkandev-download.htm
目前最新版是 Android SDKv2.1.3,
本人下文我会同时提供Android SDKv2.1.2和Android SDKv2.1.3两个版本对应的Mono For Android Bindings下载
本bindings功能完整,与他人绑定的残缺不全版本不一样,解决了以下这些问题
2.1.2版本绑定时的警告
1>------ 已启动全部重新生成: 项目: BMap4MonoAndroid.BMapSDKBinding, 配置: Debug Any CPU ------
1>BINDINGSGENERATOR : warning BG8102: Class Com.Baidu.Mapapi.Map.Overlay has unknown base type com.baidu.platform.comapi.map.u
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.GraphicsOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.ItemizedOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8701: Invalid return type java.util.List<com.baidu.mapapi.map.Overlay>
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.MyLocationOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.PoiOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.PopupOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.RouteOverlay has invalid base type com.baidu.mapapi.map.ItemizedOverlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.TextOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.TransitOverlay has invalid base type com.baidu.mapapi.map.ItemizedOverlay
1>BINDINGSGENERATOR : warning BG8C00: For type Com.Baidu.Mapapi.Search.PlaceCaterActivity, base interface com.baidu.mapapi.search.a.a does not exist.
1>BINDINGSGENERATOR : warning BG8700: Unknown return type com.baidu.vi.d
1>BINDINGSGENERATOR : warning BG8C00: For type Com.Baidu.Mapapi.Search.PlaceCaterActivity, base interface com.baidu.mapapi.search.a.a does not exist.
1>BINDINGSGENERATOR : warning BG8401: Skipping Com.Baidu.Mapapi.Search.MKSearch.PoiDetailSearch, due to a duplicate field, method or nested type name
1>D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding\obj\Debug\generated\src\Com.Baidu.Mapapi.Map.MapView.cs(13,24,13,36): warning CS0108: “Com.Baidu.Mapapi.Map.MapView.LayoutParams”隐藏了继承的成员“Android.Views.ViewGroup.LayoutParams”。如果是有意隐藏,请使用关键字 new。
1>D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding\obj\Debug\generated\src\Com.Baidu.Mapapi.Map.MapView.cs(826,36,826,55): warning CS0618: “Com.Baidu.Mapapi.Map.MapView.ZoomControls”已过时:“deprecated”
1> BMap4MonoAndroid.BMapSDKBinding -> D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding\bin\Debug\BMap4MonoAndroid.v2.1.2.dll
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
2.1.3版本绑定时的警告
1>------ 已启动全部重新生成: 项目: BMap4MonoAndroid.BMapSDKBinding_2_1_3, 配置: Debug Any CPU ------
1>BINDINGSGENERATOR : warning BG8102: Class Com.Baidu.Mapapi.Map.Overlay has unknown base type com.baidu.platform.comapi.map.v
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.GraphicsOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.ItemizedOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8701: Invalid return type java.util.List
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.MyLocationOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.PoiOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.PopupOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.RouteOverlay has invalid base type com.baidu.mapapi.map.ItemizedOverlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.TextOverlay has invalid base type com.baidu.mapapi.map.Overlay
1>BINDINGSGENERATOR : warning BG8103: Class Com.Baidu.Mapapi.Map.TransitOverlay has invalid base type com.baidu.mapapi.map.ItemizedOverlay
1>BINDINGSGENERATOR : warning BG8C00: For type Com.Baidu.Mapapi.Search.PlaceCaterActivity, base interface com.baidu.mapapi.search.a.a does not exist.
1>BINDINGSGENERATOR : warning BG8102: Class Com.Baidu.Platform.Comapi.Map.A has unknown base type com.baidu.platform.comapi.map.d
1>BINDINGSGENERATOR : warning BG8700: Unknown return type com.baidu.vi.d
1>BINDINGSGENERATOR : warning BG8C00: For type Com.Baidu.Mapapi.Search.PlaceCaterActivity, base interface com.baidu.mapapi.search.a.a does not exist.
1>BINDINGSGENERATOR : warning BG8401: Skipping Com.Baidu.Mapapi.Search.MKSearch.PoiDetailSearch, due to a duplicate field, method or nested type name
1>D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding_2_1_3\obj\Debug\generated\src\Com.Baidu.Mapapi.Map.MapView.cs(13,24,13,36): warning CS0108: “Com.Baidu.Mapapi.Map.MapView.LayoutParams”隐藏了继承的成员“Android.Views.ViewGroup.LayoutParams”。如果是有意隐藏,请使用关键字 new。
1>D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding_2_1_3\obj\Debug\generated\src\Com.Baidu.Mapapi.Map.MapView.cs(826,36,826,55): warning CS0618: “Com.Baidu.Mapapi.Map.MapView.ZoomControls”已过时:“deprecated”
1> BMap4MonoAndroid.BMapSDKBinding_2_1_3 -> D:\Development\BMap4MonoAndroid\BMap4MonoAndroid.BMapSDKBinding_2_1_3\bin\Debug\BMap4MonoAndroid.v2.1.3.dll
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
本绑定已经解决以上这些问题
绑定好的dll下载
BMap4MonoAndroid.v2.1.3.rar BMap4MonoAndroid.v2.1.2.rar
请注意,百度地图Android SDK不支持x86平台,使用的时候请注意。
如何使用绑定好的dll呢?
1、创建AndroidApplication项目,项目名称为BMap4MonoAndroid.App
2、下载BMap4MonoAndroid.v2.1.3.rar或BMap4MonoAndroid.v2.1.2.rar并解压缩
3、BMap4MonoAndroid.App项目添加对BMap4MonoAndroid.v2.1.3.dll或BMap4MonoAndroid.v2.1.2.dll的引用
4、将Libs目录复制进BMap4MonoAndroid.App项目的根目录,展开目录Libs->armeabi-v7a,选中目录下的全部.so文件,在属性窗口中把生成操作设置为AndroidNativeLibrary
5、在项目目录上点右键,选择属性菜单进入项目属性设置界面,切换到Android Manifest选项卡,给应用分类一下权限
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.READ_PHONE_STATE
android.permission.ACCESS_FINE_LOCATION
Application Name处填入BMap4MonoAndroid
package Name处填入com.bmap.monodroid
保存修改
6、打开Activity1.cs文件,在OnCreate方法下输入如下代码
base.OnCreate(bundle);
var mBMapMan = new BMapManager(Application);
//mBMapMan.Init("B1EB2D5670D2335541E3C80503DB46C18BD5CDB8", null);//v 2.1.2版测试key
mBMapMan.Init("19085348c8c35652918dcd264aacd915", null); //v 2.1.3版测试key
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main); // Get our button from the layout resource,
// and attach an event to it
var view = FindViewById<MapView>(Resource.Id.bmapsView); view.SetBuiltInZoomControls(true); view.Traffic = true; MapController mMapController = view.Controller;
// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
var point = new GeoPoint((int) (39.915*1E6), (int) (116.404*1E6));
//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
mMapController.SetCenter(point); //设置地图中心点
mMapController.SetZoom(); //设置地图zoom级别 //++++++++++++++++++++++++
// //pop demo
var pop = new PopupOverlay(view, new PopupClickListener());
///** 准备pop弹窗资源,根据实际情况更改
// * 弹出包含三张图片的窗口,可以传入三张图片、两张图片、一张图片。
// * 弹出的窗口,会根据图片的传入顺序,组合成一张图片显示.
// * 点击到不同的图片上时,回调函数会返回当前点击到的图片索引index
// */
var bmps = new Bitmap[];
try
{
bmps[] = BitmapFactory.DecodeStream(Assets.Open("Icon.png"));
bmps[] = BitmapFactory.DecodeStream(Assets.Open("Icon.png"));
bmps[] = BitmapFactory.DecodeStream(Assets.Open("Icon.png"));
}
catch (IOException e)
{
//e.printStackTrace();
}
//弹窗弹出位置
var ptTAM = new GeoPoint((int) (39.915*1E6), (int) (116.404*1E6));
//弹出pop,隐藏pop
pop.ShowPopup(bmps, ptTAM, ); //Com.Baidu.Platform.Comapi.Map.Overlay
创建一个新类PopupClickListener
public class PopupClickListener : IPopupClickListener
{
public void Dispose()
{
//throw new NotImplementedException(); } public IntPtr Handle { get; private set; } public void OnClickedPopup(int p0)
{ }
}
好了,可以运行了,运行效果如下

Mono For Android百度地图demo应用下载
<完>
Category: MonoDriod 标签:BaiduMap Binding, binding jar, mono for android, 百度地图SDK
转载自http://mdev.iquan.net/mono-for-android-baidumap-sdk2-1-2-2-1-3-binding/
Mono For Android中完美使用百度地图SDK(v2.1.2&v2.1.3)(转)的更多相关文章
- 【月入41万】Mono For Android中使用百度地图SDK
借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...
- Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误
Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...
- Xamarin.Android 集成百度地图SDK
前言:趁着周六闲得没事干,赶紧搞一搞Xamarin,最近也是怪无聊的,枯燥的生活不如打几行代码带劲:好了我们进入正题 我这篇文章时参考一位大佬的博客进行改变的,当然他写的需要一定的经验才可以看得懂,我 ...
- Android Studio集成百度地图SDK
1.建议先阅读百度地图官方的继承指南,针对了Eclipse和Android Studio. 百度官方集成指南 2.下载百度地图SDK Android SDK v4.1.1 下载有两种: 1.一键下载( ...
- Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- Android 百度地图 SDK v3.0.0 (一)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091 最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SD ...
- Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- xamarin.android 绑定百度地图SDK遇到的问题
在 xamarin.android 绑定项目中,绑定 百度地图的LBS地图SDK,参考 https://developer.xamarin.com/guides/android/advanced_to ...
随机推荐
- 《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......
<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课 ...
- Access denied for user 'root'@'MiWiFi-Ryyy-srv' (using password: YES)
虽然是跟很多人一样的问题但是原因不同,其他很多文章说是授权问题,也确实是授权问题,但是,配置文件写的是连接localhost,而这里不知道什么原因切换了使用的用户,变成了默认访问MiWiFi-Ryyy ...
- UVa 11297 Census (二维线段树)
题意:给定上一个二维矩阵,有两种操作 第一种是修改 c x y val 把(x, y) 改成 val 第二种是查询 q x1 y1 x2 y2 查询这个矩形内的最大值和最小值. 析:二维线段树裸板. ...
- Word2007发布博客
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- Android-startService后台运行
什么时候使用startService? 答:APP在后台长时间运行并执行业务的时候,可以用服务,主要是看服务的特点(在后台长时间运行): Service相关代码: package liudeli.se ...
- ASP.NET:邮件服务器与客户端
目录: 一.概述 二.MX设置 三.使用系统的SMTP功能发邮件 四.使用hMailServer收发邮件 五.Web邮件客户端 一.概述 首先必须清楚SMTP才是提供邮件服务器的核心,收发邮件全靠SM ...
- Unity3d之Coroutine
在Unity3d中使用C#时,Coroutine是一个大有用处的好东西,至于怎么用网上多的是讲,我仅在此记录最近一次使用中的小发现. 因为某种需求,要在一个Coroutine实现中使用while循环, ...
- 在linux中使用包管理器安装node.js
网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法. 1. 在U ...
- linux bash变量替换(# ## % %% / //)
VAR=hahaha echo ${VAR#*h} # ahaha 从前向后匹配删除 VAR=hahaha echo ${VAR##*h} # a 贪婪模式,从前向后匹配删除所有 VAR=hahaha ...
- Android 如何查看源码 (eclipse 按住 ctrl )
首先要确认 Android SDK Manager 下载并安装了 sources.然后在代码中按住 ctrl 在点一个类名, 如果打开的页面是找不到源码,就点那个按钮,然后找到源码所在的文件夹,就可以 ...