热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android百度地图应用之创建显示地图

这篇文章主要为大家详细介绍了Android百度地图应用之创建显示地图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文是在完成了Android百度地图应用开发基础知识的基础上继续实现的。

本文实例为大家分享了Android如何显示地图,并为后续内容做准备,供大家参考,具体内容如下

 1、运行效果
 本章共有25个示例,在x86模拟器中运行的效果如下:

 

下面介绍主要设计步骤。

 2、添加资源
 (1)drawable-hdpi 
Resources/ drawable-hdpi下的文件:将下载的示例对应文件夹下的文件全部拖放到该文件夹下,并将所有【生成操作】属性全部设置为“AndroidResource”。 
(2)layout 
Resources/layout下的文件:该文件夹下的所有文件的【生成操作】属性全部为“AndroidResource”。后续的各节示例中再逐步向该文件夹下添加文件,这是为了让你明白每个例子对应的是哪个布局文件。
(3)raw 
Resources/raw下的文件:将下载的示例对应文件夹下的文件全部拖放到该文件夹下,并确认【生成操作】属性设为“AndroidResource”。 
(4)values
 Resources/values下的文件:将下载的示例对应文件夹下的文件全部拖放到该文件夹下,并将所有【生成操作】属性全部设为“AndroidResource”。 

3、在layout下添加HelloBdMap.axml文件
 在layout文件夹下添加该文件,将其改为下面的代码:

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

4、在根目录下添加HelloBaiduMap.cs文件
 将该文件改为下面的代码: 

using Android.App;
using Android.Content.PM;
using Android.OS;
using Com.Baidu.Mapapi.Map;

namespace BdMapV371Demos
{
 [Activity(Label = "BdMapV371Demos", MainLauncher = false,
 COnfigurationChanges= ConfigChanges.Orientation,
 ScreenOrientation = ScreenOrientation.Sensor,
 Icon = "@drawable/icon")]
 public class HelloBaiduMap : Activity
 {
 private TextureMapView mMapView;
 protected override void OnCreate(Bundle bundle)
 {
  base.OnCreate(bundle);
  SetContentView(Resource.Layout.HelloBdMap);
  mMapView = FindViewById(Resource.Id.bmapView);
 }

 protected override void OnPause()
 {
  base.OnPause();
  mMapView.OnPause();
 }

 protected override void OnResume()
 {
  base.OnResume();
  mMapView.OnResume();
 }

 protected override void OnDestroy()
 {
  base.OnDestroy();
  mMapView.OnDestroy();
 }
 }
} 

5、修改Main.axml文件
 将该文件改为下面的内容: 

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 
 
 

6、添加DemoApplication.cs文件
 在项目的根文件夹下添加该文件。 

using System;
using Android.App;
using Android.Runtime;
using Com.Baidu.Mapapi;
namespace BdMapV371Demos
{
 [Application]
 public class DemoApplication : Application
 {
 public DemoApplication(IntPtr javaReference, JniHandleOwnership transfer)
  : base(javaReference, transfer)
 {
 }

 public override void OnCreate()
 {
  base.OnCreate();
  // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
  SDKInitializer.Initialize(ApplicationContext);
 }
 }
} 

7、添加SDKReceiver.cs文件
 在项目的根文件夹下添加该文件。 

using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Widget;
using Com.Baidu.Mapapi;
namespace BdMapV371Demos
{
 /// 
 /// 广播监听类,监听 SDK key 验证以及网络异常广播
 /// 
 [BroadcastReceiver]
 public class SDKReceiver : BroadcastReceiver
 {
 private static readonly string LTAG = nameof(MainActivity);
 private MainActivity bMapApiDemoMain;

 public SDKReceiver()
 {
 }

 public SDKReceiver(MainActivity bMapApiDemoMain)
  : base()
 {
  this.bMapApiDemoMain = bMapApiDemoMain;
 }

 public override void OnReceive(Context context, Intent intent)
 {
  string s = intent.Action;
  Log.Debug(LTAG, "action: " + s);
  TextView text = bMapApiDemoMain.FindViewById(Resource.Id.text_Info);
  text.SetTextColor(Color.Red);
  switch(s)
  {
  case SDKInitializer.SdkBroadtcastActionStringPermissionCheckError:
   text.Text = "key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置";
   break;
  case SDKInitializer.SdkBroadtcastActionStringPermissionCheckOk:
   text.Text += ",key验证成功!";
   text.SetTextColor(Color.Yellow);
   break;
  case SDKInitializer.SdkBroadcastActionStringNetworkError:
   text.Text = "网络出错";
   break;
  }
 }
 }
} 

8、修改String.xml文件 

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 BdMapV371Demos
 【1】Hello BaiduMap
 Demo01--Hello BaiduMap
 用TextureMapView渲染地图

 【2】基本地图功能
 Demo02--基本地图功能
 创建一张百度地图并管理地图的生命周期

 【3】基于MapFragment的基本地图
 Demo03--MapFragment的使用
 创建一个基于Fragment的地图框架

 【4】图层展示
 Demo04--图层展示
 展示普通图、卫星图、交通流量图及百度城市热力图

 【5】多地图展示
 Demo05--多地图展示
 在一个Activity中创建多个地图展示

 【6】地图操作功能
 Demo06--地图操作功能
 地图基本控制方法

 【7】UI控制功能
 Demo07--UI控制功能
 介绍开关手势功能和显示隐藏UI控件

 【8】定位图层展示
 Demo08--定位图层展示
 介绍定位图层的基本用法

 【9】覆盖物功能
 Demo09--覆盖物功能
 介绍添加覆盖物并响应点击功能和弹出pop功能

 【10】热力图功能
 Demo10--热力图功能
 介绍如何以热力图形式显示用户自有数据

 【11】地理编码功能
 Demo11--地理编码功能
 介绍地址信息与坐标之间的相互转换

 【12】POI搜索功能
 Demo12--POI搜索功能
 介绍关键词查询、suggestion查询和查看餐饮类Place详情页功能

 【13】路径规划功能
 Demo13--路径规划功能
 介绍公交、驾车和步行三种线路规划方法和自设路线方法

 【14】公交线路查询功能
 Demo14--公交线路查询功能
 介绍查询公交线路功能

 【15】短串分享
 Demo15--短串分享功能
 介绍关键词查询、suggestion查询和查看餐饮类Place详情页功能
 
 \t\t短串分享是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信、邮件或第三方分享组件(如微博、微信等)把短串分享给其他用户从而实现地理位置信息的分享。当其他用户收到分享的短串后,点击短串即可打开手机上的百度地图客户端或者手机浏览器进行查看。\n\n
 \t\t例如,用户搜索“百度大厦”后通过短信使用短串分享功能把该地点分享给好友,好友点击短信中的短串“http://j.map.baidu.com/XLCrk”后可以调起百度地图客户端或者手机浏览器查看“百度大厦”的地理位置信息。\n\n
 \t\t目前短串分享功能暂时开放了“POI搜索结果分享”和“反向地理编码结果分享”,日后会开放更多的功能,欢迎广大开发者使用。
 

 【16】离线地图功能
 Demo16--离线地图功能
 介绍如何下载和使用离线地图

 【17】周边雷达功能
 Demo17--周边雷达功能
 介绍如何使用周边雷达功能上传位置、检索周边的人
 
 【18】自定义绘制功能
 Demo18--自定义绘制功能
 介绍自定义绘制点、线、多边形、圆等几何图形和文字

 【19】全景图 Hello World
 Demo19--全景图 Hello World

 【20】全景图功能
 Demo20--全景图功能
 介绍如何通过多种方式获取百度全景

 

 【Demo20-1】通过百度全景ID(PID)获取全景
 【Demo20-2】通过百度经纬度坐标获取全景
 【Demo20-3】通过百度墨卡托坐标获取全景
 【Demo20-4】通过百度地图UID获取外景
 【Demo20-5】通过百度地图UID获取内景
 【Demo20-6】添加自定义标注到全景图
 【Demo20-7】高德, 腾讯, 谷歌坐标转换百度坐标
 【Demo20-8】其他全景参数设置

 
 
 【21】兴趣点收藏功能
 Demo21--兴趣点收藏功能
 介绍如何创建、管理本地点数据

 【22】LBS云检索功能
 Demo22--LBS云检索功能
 介绍如何使用LBS云检索用户自有数据
 云检索使用介绍
 
 \t\tLBS云是百度地图针对LBS开发者推出的平台级服务。结合已有的地图API和SDK服务。通过开放服务端存储和计算能力,提供海量位置数据存储、检索、展示一体化解决方案。\n\n
 \t\t该服务对开发者免费开放。测试demo里写入了测试的ak。开发者可以使用测试ak查看 LBS.云检索的效果。如果开发者要使用自己的数据,请在申请ak后替换demo中的ak。\n\n
 \t\t如有任何关于LBS云服务的问题,诸如如何申请ak、如何存储和检索数据等,请访问百度地图官方“LBS开放平台”。地址:http://lbsyun.baidu.com/ \n
 

 【23】瓦片图功能
 Demo23--瓦片图功能
 介绍如何在地图上添加自定义的瓦片图

 【24】OpenGL绘制功能
 Demo24--OpenGL绘制功能
 介绍如何使用OpenGL绘制在地图中进行绘制

 Demo22--点聚合功能
 点聚合功能--MarkerClusterDemo

 POI附近搜索功能
 POI附近检索功能

 【25】调启百度地图
 Demo25--调启百度地图
 介绍如何调启百度地图实现自身业务功能

 

9、修改MainActivity.cs文件
 将该文件改为下面的代码: 

using Android.App;
using Android.Content;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Graphics;
using Android.Content.PM;
using Com.Baidu.Mapapi;
using Com.Baidu.Mapapi.Model;
using BdMapV371Demos.SrcSdkDemos;

namespace BdMapV371Demos
{
 [Activity(Label = "BdMapV371Demos", MainLauncher = true,
 COnfigurationChanges= ConfigChanges.Orientation,
 ScreenOrientation = ScreenOrientation.Sensor,
 Icon = "@drawable/icon")]
 public class MainActivity : Activity
 {
 private SDKReceiver sdkReceiver;

 //百度地图上河南大学计算机与信息工程学院的经纬度(中心点位置)
 public static readonly LatLng HeNanUniversity = new LatLng(34.824635, 114.315745);

 protected override void OnCreate(Bundle bundle)
 {
  base.OnCreate(bundle);
  SetContentView(Resource.Layout.Main);

  TextView text = FindViewById(Resource.Id.text_Info);
  text.SetTextColor(Color.Red);
  text.Text = "百度地图Android SDK v" + VersionInfo.ApiVersion;

  ListView mListView = FindViewById(Resource.Id.listView);
  // 添加ListItem,设置事件响应
  mListView.Adapter = new DemoListAdapter(this);

  // 注册SDK广播监听者
  IntentFilter intentFilter = new IntentFilter();
  intentFilter.AddAction(SDKInitializer.SdkBroadtcastActionStringPermissionCheckOk);
  intentFilter.AddAction(SDKInitializer.SdkBroadtcastActionStringPermissionCheckError);
  intentFilter.AddAction(SDKInitializer.SdkBroadcastActionStringNetworkError);
  sdkReceiver = new SDKReceiver(this);
  RegisterReceiver(sdkReceiver, intentFilter);

  mListView.ItemClick += (sender, args) =>
  {
  int index = args.Position;
  Intent intent = new Intent(this, demos[index].demoClass.GetType());
  StartActivity(intent);
  };
 }

 private static readonly DemoInfo[] demos =
 {
  //示例1--HelloBaiduMap
  new DemoInfo(Resource.String.demo_title_hello,
  Resource.String.demo_desc_hello,
  new Demo01HelloBaiduMap()),

  //示例2--基本地图功能
  new DemoInfo(Resource.String.demo_title_basemap,
  Resource.String.demo_desc_basemap,
  new Demo02BaseMap()),

  //示例3--MapFragment使用
  new DemoInfo(Resource.String.demo_title_map_fragment,
  Resource.String.demo_desc_map_fragment,
  new Demo03MapFragment()),

  //示例4--图层展示
  new DemoInfo(Resource.String.demo_title_layers,
  Resource.String.demo_desc_layers,
  new Demo04Layers()),

  //示例5--多地图展示
  new DemoInfo(Resource.String.demo_title_multimap,
  Resource.String.demo_desc_multimap,
  new Demo05MutiMapView()),

  //示例6--地图操作功能
  new DemoInfo(Resource.String.demo_title_control,
  Resource.String.demo_desc_control,
  new Demo06MapControl()),

  //示例7--UI控制功能
  new DemoInfo(Resource.String.demo_title_ui,
  Resource.String.demo_desc_ui,
  new Demo07UISetting()),

  //示例8--定位图层展示
  new DemoInfo(Resource.String.demo_title_location,
  Resource.String.demo_desc_location,
  new Demo08Location()),

  //示例9--覆盖物功能
  new DemoInfo(Resource.String.demo_title_overlay,
  Resource.String.demo_desc_overlay,
  new Demo09Overlay()),

  //示例10--热力图功能
  new DemoInfo(Resource.String.demo_title_heatmap,
  Resource.String.demo_desc_heatmap,
  new Demo10HeatMap()),
  
  //示例11--地理编码功能
  new DemoInfo(Resource.String.demo_title_geocode,
  Resource.String.demo_desc_geocode,
  new Demo11GeoCoder()),

  //示例12--POI搜索功能
  new DemoInfo(Resource.String.demo_title_poi,
  Resource.String.demo_desc_poi,
  new Demo12PoiSearch()),

  //示例13--路径规划功能
  new DemoInfo(Resource.String.demo_title_route,
  Resource.String.demo_desc_route,
  new Demo13RoutePlan()),

  //示例14--公交线路查询功能
  new DemoInfo(Resource.String.demo_title_bus,
  Resource.String.demo_desc_bus,
  new Demo14BusLineSearch()),

  //示例15--短串分享功能
  new DemoInfo(Resource.String.demo_title_share,
  Resource.String.demo_desc_share,
  new Demo15Share()),

  //示例16--离线地图功能
  new DemoInfo(Resource.String.demo_title_offline,
  Resource.String.demo_desc_offline,
  new Demo16Offline()),

  //示例17--周边雷达功能
  new DemoInfo(Resource.String.demo_title_radar,
  Resource.String.demo_desc_radar,
  new Demo17Radar()),

  //示例18--自定义绘制功能
  new DemoInfo(Resource.String.demo_title_geometry,
  Resource.String.demo_desc_geometry,
  new Demo18Geometry()),

  //示例19--全景图 Hello World
  new DemoInfo(Resource.String.demo_title_panorama_hello,
  Resource.String.demo_desc_panorama,
  new Demo19PanoHelloWorld()),

  //示例20--全景图功能
  new DemoInfo(Resource.String.demo_title_panorama,
  Resource.String.demo_desc_panorama,
  new Demo20PanoActivity()),

  //示例21--兴趣点收藏功能
  new DemoInfo(Resource.String.demo_title_favorite,
  Resource.String.demo_desc_favorite,
  new Demo21Favorite()),

  //示例22--LBS云检索功能
  new DemoInfo(Resource.String.demo_title_cloud,
  Resource.String.demo_desc_cloud,
  new Demo22CloudSearch()),

  //示例23--瓦片图功能
  new DemoInfo(Resource.String.demo_title_tileoverlay,
  Resource.String.demo_desc_tileoverlay,
  new Demo23TileOverlay()),

  //示例24--OpenGL绘制功能
  new DemoInfo(Resource.String.demo_title_opengl, Resource.String.demo_desc_opengl,
  new Demo24OpenGL()),

  //示例25--调启百度地图
  new DemoInfo(Resource.String.demo_title_open_baidumap, Resource.String.demo_desc_open_baidumap,
  new Demo25OpenBaiduMap()),
 };

 protected override void OnResume()
 {
  base.OnResume();
 }

 protected override void OnDestroy()
 {
  // 取消监听 SDK 广播
  UnregisterReceiver(sdkReceiver);
  base.OnDestroy();
 }

 private class DemoListAdapter : BaseAdapter
 {
  MainActivity bMapApiDemoMain;

  public DemoListAdapter(MainActivity bMapApiDemoMain)
  : base()
  {
  this.bMapApiDemoMain = bMapApiDemoMain;
  }

  public override View GetView(int index, View convertView, ViewGroup parent)
  {
  cOnvertView= View.Inflate(bMapApiDemoMain, Resource.Layout.demo_info_item, null);
  TextView title = convertView.FindViewById(Resource.Id.title);
  TextView desc = convertView.FindViewById(Resource.Id.desc);
  title.SetText(demos[index].title);
  desc.SetText(demos[index].desc);
  //if (index >= 16)
  //{
  // title.SetTextColor(Color.Red);
  //}
  return convertView;
  }

  public override int Count
  {
  get { return demos.Length; }
  }

  public override Java.Lang.Object GetItem(int index)
  {
  return demos[index];
  }

  public override long GetItemId(int id)
  {
  return id;
  }
 }

 private class DemoInfo : Java.Lang.Object where T : Activity
 {
  public readonly int title;
  public readonly int desc;
  public readonly T demoClass;

  public DemoInfo(int title, int desc, T demoClass)
  {
  this.title = title;
  this.desc = desc;
  this.demoClass = demoClass;
  }
 }
 }
} 

10、运行 
调试运行,在主界面中单击【Hello BaiduMap】,观察效果。
 注意:本章后面介绍的所有例子都是在这一节例子的基础上继续修改完成的。这样做的目的是为了在同一个项目中演示多个示例,而不是一个项目仅包含一个示例,这样可避免必须申请多个密钥的麻烦。
 要确保该例子在你的模拟器上运行没问题,才能继续学习后续的demo。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 百度搜索结果链接提取工具 UrlGetter V1.43
    该工具专为获取百度搜索引擎的结果页面中的网址链接而设计,能够解析并转换为原始URL。通过正则表达式匹配技术,精准提取网页链接,并提供详细的使用说明和下载资源。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
author-avatar
手机用户2602909197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有