在Xamarin Mono For Android的開發中,若是要使用第三方的jar,就必須進行綁定。經過建立Java Bindings Library項目來自動生成C#到java的代碼映射代碼,最終產生一個dll程序集,咱們調用這個程序集中的代碼就能夠調用jar中對應的代碼。java
++++++++++++++++++++++++++++++++++++++++++++++++android
Xamarin Mono 移動跨平臺開發羣 230865920api
歡迎你們進來交流app
++++++++++++++++++++++++++++++++++++++++++++++++函數
百度地圖官方Android SDK下載地址:http://developer.baidu.com/map/sdkandev-download.htm測試
目前最新版是 Android SDKv2.1.3,ui
本人下文我會同時提供Android SDKv2.1.2和Android SDKv2.1.3兩個版本對應的Mono For Android Bindings下載spa
本bindings功能完整,與他人綁定的殘缺不全版本不同,解決了如下這些問題.net
2.1.2版本綁定時的警告code
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呢?
一、建立AndroidApplication項目,項目名稱爲BMap4MonoAndroid.App
二、下載BMap4MonoAndroid.v2.1.3.rar或BMap4MonoAndroid.v2.1.2.rar並解壓縮
三、BMap4MonoAndroid.App項目添加對BMap4MonoAndroid.v2.1.3.dll或BMap4MonoAndroid.v2.1.2.dll的引用
四、將Libs目錄複製進BMap4MonoAndroid.App項目的根目錄,展開目錄Libs->armeabi-v7a,選中目錄下的所有.so文件,在屬性窗口中把生成操做設置爲AndroidNativeLibrary
五、在項目目錄上點右鍵,選擇屬性菜單進入項目屬性設置界面,切換到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
保存修改
六、打開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(12); //設置地圖zoom級別 //++++++++++++++++++++++++ // //pop demo var pop = new PopupOverlay(view, new PopupClickListener()); ///** 準備pop彈窗資源,根據實際狀況更改 // * 彈出包含三張圖片的窗口,能夠傳入三張圖片、兩張圖片、一張圖片。 // * 彈出的窗口,會根據圖片的傳入順序,組合成一張圖片顯示. // * 點擊到不一樣的圖片上時,回調函數會返回當前點擊到的圖片索引index // */ var bmps = new Bitmap[3]; try { bmps[0] = BitmapFactory.DecodeStream(Assets.Open("Icon.png")); bmps[1] = BitmapFactory.DecodeStream(Assets.Open("Icon.png")); bmps[2] = 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, 32); //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/