Ximarin.Android 百度地图

一、工欲善其事,必先利其器

    需要准备的工作和资源
   百度地图SDK 该链接下是所有百度地图更新的历史版本,请根据情况下载
   安全码校对工具 检测填写SHA1值是否正确
  
   当前项目的DEMO  Demo下载后需要修改 SHA1

二、正文

  Demo中有很多不足,为何第二次引用BaiduMap没有

  如何在Xamarin.Forms中引用第三方的SDK,  .OS文件怎么引用

2.1、新建项目

2.2、第二导入Jar包,并修改生成操作

2.3、如果直接生成这个地方会报一个错,我们需要修改Transforms/Metadata.xml配置文件,直接覆盖好啦

   错误:versioninfo成员名称不能与它们的封闭类型相同

<metadata>
  <!--
  This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
  
  This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
  -->
  <attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="managedName">VERSION_INFO_</attr>
  <!-- <attr path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/class[@name='RouteGuideParams.RGKey.CurRoadName']/field[@name='CurRoadName']" name="managedName">CurRoadName_</attr>-->

  <!-- <remove-node path="/api/package/class/implements[@name='android.provider.BaseColumns']" />-->
  <!--- <remove-node path="/api/package[@name='com.baidu.navisdk.comapi.mapcontrol']/class[@name='BNMapItemizedOverlay']" />
  <remove-node path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/class[@name='BNRouteGuider']" /> -->
  <!--  <remove-node path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/interface[@name='IRGInfoListener']" />
-->

  <!--<remove-node path="/api/package[@name='Com.Baidu.Navisdk.Comapi.Routeguide']/class[@name='AssistInfoHideEventArgs']" /> -->


  <!--<attr path="/api/package[@name='com.baidu.location.e']" name="managedName">com.baidu.location.ea</attr>
<attr path="/api/package[@name='com.baidu.location.e']" name="obfuscated" >false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/interface[@name='v.a']" name="visibility" >public</attr>
<attr path="/api/package[@name='com.baidu.location.e']/interface[@name='v.a']" name="obfuscated" >false</attr>-->
  <attr path="/api/package[@name='com.baidu.mapapi.map']/interface[@name='Overlay.a']" name="obfuscated" >false</attr>
  <!--<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='i']" name="visibility" >public</attr>
<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='i.a']" name="obfuscated" >false</attr>-->

  <attr path="/api/package[@name='com.baidu.platform.comapi.util']/class[@name='PermissionCheck.b']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.util']/class[@name='PermissionCheck.b']" name="managedName">b_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.util']/interface[@name='PermissionCheck.c']" name="obfuscated">false</attr>

  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='MapRenderer']/field[@name='a']" name="managedName">aVar</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='MapRenderer.a']" name="obfuscated">false</attr>


  <attr  path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B.b']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='b']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='f']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='z']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='y']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comjni.map.basemap']/interface[@name='b']" name="obfuscated">false</attr>
  <attr  path="/api/package[@name='com.baidu.platform.comjni.map.basemap']/class[@name='a']" name="obfuscated">false</attr>

  <attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='i']" name="obfuscated" >false</attr>
  <attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='i']" name="visibility" >public</attr>
  <attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='j']" name="obfuscated" >false</attr>

  <attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='d']" name="obfuscated" >false</attr>
  <attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='d']" name="visibility" >public</attr>

  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='j.a']" name="obfuscated" >false</attr>
  <!--<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='l']" name="visibility" >public</attr>
<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='l.a']" name="obfuscated" >false</attr>
<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='l.a']" name="visibility" >false</attr>-->






  <!--<attr path="/api/package[@name='com.baidu.location.e']/class[@name='v']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/class[@name='v']" name="visibility">public</attr>
<attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="managedName" >address_</attr>
<attr path="/api/package[@name='com.baidu.location.b']/interface[@name='b']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location.b']/interface[@name='f']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/class[@name='p']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/class[@name='b.a']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/class[@name='b.b']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.location']/class[@name='LocationClientOption']/field[@name='a']" name="visibility">public</attr>
<attr path="/api/package[@name='com.baidu.location']/class[@name='a']" name="obfuscated" >false</attr>
<attr path="/api/package[@name='com.baidu.location.d']/class[@name='a']" name="obfuscated" >false</attr>
<attr path="/api/package[@name='com.baidu.location.e']/interface[@name='p.a']" name="obfuscated">false</attr>-->
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='q']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='t']" name="obfuscated">false</attr>

  <!--<attr path="/api/package[@name='com.baidu.speechsynthesizer.data']/interface[@name='SpeechOfflineSynthesizer.a']" name="obfuscated">false</attr>
<attr path="/api/package[@name='com.baidu.speechsynthesizer.data']/interface[@name='SpeechOfflineSynthesizer.b']" name="obfuscated">false</attr>-->
  <attr path="/api/package[@name='com.baidu.vi']/class[@name='a']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.vi']/class[@name='b']" name="obfuscated">false</attr>


  <attr path="/api/package[@name='com.baidu.vi']/class[@name='c']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.vi']/class[@name='c']" name="managedName">c_</attr>

  <!--导航-->
  <!--has already a definition for Tap-->
  <!--<attr path="/api/package[@name='com.baidu.navisdk.comapi.mapcontrol']/interface[@name='BNMapItemizedOverlay.OnTapListener']/method[@name='onTap' and count(parameter)=2]" name="argsType">TapEventArgs1</attr>
<attr path="/api/package[@name='com.baidu.navisdk.comapi.mapcontrol']/interface[@name='BNMapItemizedOverlay.OnTapListener']/method[@name='onTap' and count(parameter)=2]" name="managedName">onTap1</attr>

<attr path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/interface[@name='BNRouteGuider.OnRGSubStatusListener']" name="managedName">OnRGSubStatusListener1</attr>-->
  <!--<attr path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/interface[@name='OnRGInfoListener']" name="managedName">OnRGInfoListener1</attr>

<attr path="/api/package[@name='com.baidu.navisdk.comapi.routeguide']/class[@name='RouteGuideParams.RGKey.CurRoadName']/field[@name='CurRoadName']" name="managedName">CurRoadName_</attr>-->
  <!--<remove-node path="/api/package[@name='java.util']/interface[@name='Comparator&lt;Java.Lang.Object&gt;']" />-->

  <!--<attr path="/api/package[@name='com.baidu.navisdk.ui.widget']/class[@name='BNHorizontalListView']/method[@name='getAdapter' and count(parameter)=0]" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.baidu.navisdk.ui.routeguide.model']/class[@name='RGAssistGuideModel.AssistInfo']/method[@name='compareTo' and count(parameter)=1 and parameter[1][@type='com.baidu.navisdk.ui.routeguide.model.RGAssistGuideModel.AssistInfo']]/parameter[1]" name="managedType">Java.Lang.Object</attr> -->

  <attr path="/api/package[@name='com.baidu.mapapi.cloud']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="managedName">VERSION_INFO_</attr>
  <attr path="/api/package[@name='com.baidu.mapapi.radar']/class[@name='VersionInfo']" name="managedName">VERSION_INFO_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='A']/field[@name='a']" name="managedName">a_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='f']/field[@name='f']" name="managedName">f_</attr>



  <attr path="/api/package[@name='com.baidu.platform.comapi.radar']/interface[@name='c']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='J']" name="managedName">J_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='j.a']" name="obfuscated">false</attr>


  <!--Search-->
  <attr path="/api/package[@name='com.baidu.mapapi.search.core']/class[@name='g']" name="obfuscated">false</attr>

  <!--util-->
  <attr path="/api/package[@name='com.baidu.mapapi.a.a']/class[@name='a']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.mapapi.a.a']/class[@name='a']" name="managedName">a_</attr>

  <!--map-->
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B']/field[@name='a']" name="managedName">a_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='c']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='i']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='i']" name="managedName">i_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/interface[@name='n']" name="obfuscated">false</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='g']" name="obfuscated">false</attr>

  <!--<attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="managedName">address_</attr>
<attr path="/api/package[@name='com.baidu.mapapi.map']/class[@name='d']/field[@name='d']" name="managedName">d_</attr>-->

  <attr path="/api/package[@name='com.baidu.mapapi.search.district']/interface[@name='OnGetDistricSearchResultListener']/method[@name='onGetDistrictResult']" name="argsType" >GetTDistrictResultEventArgs</attr>

  <attr path="/api/package[@name='com.baidu.mapapi.search.district']/class[@name='DistrictSearch']" name="managedName">DistrictSearch_</attr>

  <remove-node path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='C']" />

  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='c']/method[@name='d' and count(parameter)=0]" name="managedName">d_</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='c']/method[@name='c' and count(parameter)=0]" name="managedName">c_</attr>
</metadata>
View Code

2.4、成功生成项目

2.5、创建一个Xamarin.Andorid项目(目前还没有搞定Xamarin.Forms中的引用第三方SDK;如果您已经研究出来,跪求分享)

2.6、引用之前添加的Java Library项目,这个地方如果引用不了,我们可以引用其生成成功的DLL即可

2.7、我们添加两个文件并把下载的SDK中.SO文件放到目录下并且修改“生成操作”为 “AndroidNativeLibrary”

 

2.8、关键的两步,很多人都卡在这个地方了,把百度地图的相关配置,配置到当前项目中

  配置开发KEY,配置到AssemblyInfo.cs文件中(请不要使用我的KEY)  

重点 注:如何申请应用请点击这里,并正确填写包名和SHA1,不能确保100%,一定要看这个

[assembly: MetaData("com.baidu.lbsapi.API_KEY", Value = "loEVXHdyqSdhGcYZlqkMES7x")]

 

2.9、给当前APP相对应的权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="BaiduMapDemo.BaiduMapDemo" android:versionCode="1" android:versionName="1.0">
  <uses-sdk android:minSdkVersion="16" />
  <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" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>

3.0 在Main.axml文件件中输入

<com.baidu.mapapi.map.MapView
      android:id="@+id/bmapView"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:clickable="true" />

3.1 在MainActivity.cs文件中输入

博主在这个地方,第一次引用项目时

Com.Baidu.Mapapi.Map 类下面是有BaiduMap控件,但是不知道为何第二次,Jar包什么都正常,整个工程也是能运行的,但是就是没有MapView这个控件,后来也不得不换成第一生成好的DLL了
资源下载点击这里
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 BaiduMapDemo
{
    [Activity(Label = "BaiduMapDemo", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        MapView mMapView;
        BaiduMap mBaiduMap;
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SDKInitializer.Initialize(Application.Context);
            SetContentView(Resource.Layout.Main);
            mMapView = FindViewById<MapView>(Resource.Id.bmapView);

            mBaiduMap = mMapView.Map;
            //普通地图
            mBaiduMap.MapType = BaiduMap.MapTypeNormal;
        }
    }
}

3.2 运行成功(我在模拟器上面一直报错,初始化失败,解决半天没搞定,我就直接上真机上测试,)

在真机上面我的运行环境我只保留了armeabi(还没去查这个之间的区别,但是网上是这么说的)

 

(QQ群)Xamarin.Forms:521288080

共同探讨摸索、共同进步

 

转载于:https://www.cnblogs.com/nimeide/p/5259203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值