前言:趁着週六閒得沒事幹,趕忙搞一搞Xamarin,最近也是怪無聊的,枯燥的生活不如打幾行代碼帶勁;好了咱們進入正題php
我這篇文章時參考一位大佬的博客進行改變的,固然他寫的須要必定的經驗才能夠看得懂,我爲了小白仍是改編了一下,這篇文章的傳送門html
正文:android
1.建立SDKapi
2.獲取SHA1微信
3.項目集成app
4.問題處理ide
首先呢,你要註冊百度帳號,我相信你們都應該有了,那麼登陸以後,點擊控制檯,其百度地圖的官方地址:http://lbsyun.baidu.com/工具
如圖所示;建立SDK是須要SHA1的,那咱們如何獲取呢,找到你安裝Xamarin的位置,通常都是C盤Program Files\Java 要否則就是C:\Program Files (x86)\Java spa
獲取sha1的相關步驟:.net
1.進去Java文件夾裏面以後再進入bin文件夾,再以後你看看有沒有keytool.exe文件,如何有的話就沒有任何問題了。
2.找到debug.keystore文件,通常是 C:\Users\ **********\AppData\Local\Xamarin\Mono for Android文件夾,仍是同樣若是你有這個文件,那也就沒有任何問題。
3.打開Cmd,最好仍是經過管理員進去工具。
首先cd進去到你的keytool所在的文件夾bin中,輸入命令 keytool.exe -list -v -keystore "%LocalAppData%\Xamarin\Mono for Android\debug.keystore" 輸入密鑰庫口令: android 回車;
找到SHA1那一行復制,必定要複製成功啊,要否則還得操做一遍,關閉窗口,繼續幹。
還記得剛纔的頁面嗎,寫上你的SHA1,而後點擊提交,就ok了。
百度地圖SDK
打開界面http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 去下載你的SDK(這個操做你須要去建立Xamarin binding 項目去生成你的dll)這個過程就是將Java的jar變成.net的dll
爲簡單考慮,這裏就不寫這個了,直接去下載生成好的dll去用吧,由於如今百度地圖的sdk版本有點高,我這裏實在是生成不經過,只能去用4.5版本的,若是大佬有經過5.5版本的請聯繫樓主!!必有重謝
附4.5版本的dll一份,將就着用吧。地址:連接:https://pan.baidu.com/s/1yb2a1dldI6DZpHTwQrARAQ 提取碼:zjbz(這個連接永遠有效)
把這個dll放到bin文件夾中,添加引用便可。
再以後你就須要去配置下AndroidManifest.xml文件了(這個文件放的還挺深的,在Properties文件夾中) 如下是文件初始定義:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="App1.App1">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
</application>
</manifest>
還記得咱們剛纔生成的AK嗎?若是你忘記保存,請自行尋找http://lbsyun.baidu.com/apiconsole/key
1.在其中添加開發密鑰
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="開發者 key" /> </application>
2.添加所需權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
其完整定義如一下收縮代碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="App1.App1">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="xxxxxxxxx" />
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
</manifest>
在Main.xaml中添加地圖控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main">
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</RelativeLayout>
在MainActivity.cs中初始化sdk,那麼須要注意的是在SDK各功能組件使用以前都須要調用SDKInitializer.initialize(getApplicationContext());所以咱們建議該方法放在Application的初始化方法中。
建立地圖Activity,管理地圖生命週期;這是如下代碼的定義:
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Com.Baidu.Mapapi;
using Com.Baidu.Mapapi.Map;
namespace Android
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : Activity
{
MapView mMapView = null;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SDKInitializer.Initialize(ApplicationContext);
SetContentView(Resource.Layout.content_main);
mMapView = FindViewById<MapView>(Resource.Id.bmapView);
var s = mMapView.Map;
s.MapType = BaiduMap.MapTypeSatellite;
}
protected override void OnDestroy()
{
base.OnDestroy();
mMapView.OnDestroy();
}
protected override void OnResume()
{
base.OnResume();
mMapView.OnResume();
}
protected override void OnPause()
{
base.OnPause();
mMapView.OnPause();
}
}
}
那麼最後最後一個步驟就是把你的包名改變如下就歐克了
這就是基本的百度地圖sdk集成過程,若是你有v5版本的生成dll經驗,請聯繫我!!這幾天出支付寶和微信的sdk集成。若是以爲這篇文章還算有用的話,點推薦吧兄臺!!
上圖就是結果,ok~就這樣!