Mono For Android中完美使用百度地圖SDK(v2.1.2&v2.1.3)(轉)

在Xamarin Mono For Android的開發中,若是要使用第三方的jar,就必須進行綁定。經過建立Java Bindings Library項目來自動生成C#到java的代碼映射代碼,最終產生一個dll程序集,咱們調用這個程序集中的代碼就能夠調用jar中對應的代碼。java

clip_image001

++++++++++++++++++++++++++++++++++++++++++++++++android

Xamarin Mono 移動跨平臺開發羣 230865920api

歡迎你們進來交流app

++++++++++++++++++++++++++++++++++++++++++++++++函數

百度地圖官方Android SDK下載地址:http://developer.baidu.com/map/sdkandev-download.htm測試

目前最新版是 Android SDKv2.1.3ui

本人下文我會同時提供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.rarBMap4MonoAndroid.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)
    {
 
    }
}

好了,能夠運行了,運行效果以下

clip_image001[1]

Mono For Android百度地圖demo應用下載

BMap4MonoAndroid.App.rar

<完>

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/

相關文章
相關標籤/搜索