单击【自定义下载】,在弹出的界面中,除了导航功能外,其他全部选中,然后将其下载到本机中,并解压到某个文件夹下,以便后续的步骤使用它。
2、使用Gaxaxy_Api23_x86模拟器观察运行结果
为了解决MapView使用硬件加速时存在的问题,百度提供了一个TextureMapView控件,使用此控件呈现地图时,要求修改模拟器的开发者选项。
要使用TextureMapView显示百度地图,需要满足下面的条件:
•将所有官方示例中的MapView全部改为用TextureMapView控件来呈现。
•修改模拟器的开发者选项,将其设置为允许模拟器“强制进行GPU渲染”(如下图所示)。

这两个条件都满足后,百度地图才能顺利显示出来。
好了,以后也不需要忍受没有硬件加速的ARM模拟器那个特别的“慢”了,后面的例子将继续用带硬件加速的x86模拟器来演示。
当然也可以直接用手机调试运行(这是建议的调试办法,手机连上电脑后可直接在debug右侧的下拉框中看到该手机的选项,用这种办法调试地图应用程序也更符合实际。但是,由于手机调试截图麻烦,所以这里还是直接用模拟器来演示了。
二、创建BdMapV371BindingLib解决方案
解决方案和项目名:BdmapV371BindingLib
模板:Bindings Library(Android)
创建绑定库的目的是将百度地图SDK 3.7.1版本的所有.jar文件自动转换为.cs文件并生成对应的.dll文件,转换以后,就可以在应用项目中引用生成的.dll文件了。
这也是转换.jar文件为.cs文件最常用的办法。
1、添加JAR文件
将以下文件复制到项目的jars文件夹下,并将这些文件的【生成操作】属性全部改为“EmbeddedJar”。
BaiduLBS_Android.jar
IndoorscapeAlbumPlugin.jar
2、添加最新稳定版Xamarin.Android.Support.v4的引用
鼠标右击【引用】à【管理NuGet程序包】,添加最新稳定版Xamarin.Android.Support.v4的引用,本人添加的是Xamarin.Android.Support.v4.23.1.1.0。
3、修改Metadata.xml文件
打开Transforms文件夹下的Metadata.xml文件,将其改为下面的内容:
<metadata> <attr path="/api/package[@name="com.baidu.mapapi"]/class[@name="VersionInfo"]/field[@name="VERSION_INFO"]" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name="com.baidu.platform.comapi.map"]/class[@name="A"]/field[@name="a"]" name="managedName">aVar</attr> <attr path="/api/package[@name="com.baidu.platform.comapi.map"]/class[@name="B"]/field[@name="b"]" name="managedName">bVar</attr> <attr path="/api/package[@name="com.baidu.location"]/class[@name="Address"]/field[@name="address"]" name="managedName">AddressString</attr> <attr path="/api/package[@name="com.baidu.mapapi.cloud"]/class[@name="VersionInfo"]/field[@name="VERSION_INFO"]" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name="com.baidu.mapapi.radar"]/class[@name="VersionInfo"]/field[@name="VERSION_INFO"]" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name="com.baidu.mapapi.search.core"]/class[@name="g"]" name="obfuscated">false</attr> <attr path="/api/package[@name="com.baidu.mapapi.search.district"]/class[@name="DistrictSearch"]" name="managedName">DistrictSearchs</attr> <attr path="/api/package[@name="com.baidu.pano.platform.comapi.a"]/class[@name="a"]" name="obfuscated">false</attr> <attr path="/api/package[@name="com.baidu.location"]/class[@name="LocationClientOption"]/field[@name="mLocationMode"]" name="visibility">public</attr> <attr path="/api/package[@name="com.baidu.mapapi.a.a"]/class[@name="a"]" name="obfuscated">false</attr></metadata>4、添加BaiduMapOptions.cs文件
namespace Com.Baidu.Mapapi.Map{public partial class BaiduMapOptions{public BaiduMapOptions() { }}}该文件的用途是提供一个不带参数的构造函数,如果不添加该文件,无法直接在后续节的Demos项目中创建BaiduMapOptions的实例(这一节用不到它)。 <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="BdMapV371Demos.BdMapV371Demos" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"><uses-sdk /><application android:label="BdMapV371Demos" android:theme="@style/MyCustomTheme"><meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你申请的密钥" /><service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /></application><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!-- 访问网络,网络定位需要上网--><uses-permission android:name="android.permission.INTERNET" /><!-- 这个权限用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 获取运营商信息,用于支持提供运营商信息相关的接口--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><!-- 用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- SD卡读取权限,用户写入离线定位数据--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><!--允许应用读取低级别的系统日志文件 --><uses-permission android:name="android.permission.READ_LOGS" /><uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" /><!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.LOCATION_HARDWARE" /><uses-permission android:name="android.permission.SET_ANIMATION_SCALE" /> --><supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /></manifest>2、运行项目得到SHA1