分类:C#、Android、VS2015、百度地图应用; 创建日期:2016-02-04

一、简介

调启百度地图是指:利用SDK接口,可直接在本地打开百度地图客户端或WebApp实现地图功能。 目前支持调启的功能有:POI周边检索、POI详情页面、步行线路规划、驾车线路规划、公交线路规划、驾车导航、步行导航、骑行导航(步行、骑行需百度地图App 8.6.6以上版本才支持)。

二、运行截图

简介:介绍如果利用简单接口调用,开启百度地图客户端实现复杂逻辑业务。

详述:

(1)调启百度地图导航(Native);

(2)调启百度地图POI周边检索;

(3)调启百度地图POI详情检索;

(4)调启百度地图步行线路规划;

(5)调启百度地图驾车线路规划;

(6)调启百度地图公交线路规划;

(7)调启百度地图步行导航;(需百度地图App 8.6.6以上版本支持)

(8)调启百度地图骑行导航(需百度地图App 8.6.6以上版本支持)

作为本章的最后一个例子,不再详细截取每个子功能的效果图了(由于模拟器没有安装百度地图客户端,无法看到效果图,只有在安装了百度地图客户端的真实手机上才能看到效果图),因此这里仅截取了在模拟器中运行时本章的主导航界面和本例子的导航界面。

三、设计步骤

1、添加demo25_open_baidumap.xml文件

在layout文件夹下添加该文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="?android:attr/listDivider" />
<ListView
android:id="@+id/listView_openBaiduMap"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

2、添加Demo25OpenBaiduMap.cs文件

在SrcSdkDemos文件夹下添加该文件,然后将代码改为下面的内容:

using System;
using System.Collections.Generic;
using Android.App;
using Android.OS;
using Android.Widget;
using Android.Views;
using Com.Baidu.Mapapi.Navi;
using Com.Baidu.Mapapi.Model;
using Com.Baidu.Mapapi.Utils;
using Com.Baidu.Mapapi.Utils.Poi;
using Com.Baidu.Mapapi.Utils.Route;
namespace BdMapV371Demos.SrcSdkDemos
{
/// <summary>
/// 此demo用来展示如何在地图绘制的每帧中再额外绘制一些用户自己的内容
/// </summary>
[Activity(Label = "@string/demo_name_open_baidumap")]
public class Demo25OpenBaiduMap : Activity
{
// 天安门坐标
double mLat1 = 39.915291;
double mLon1 = 116.403857;
// 百度大厦坐标
double mLat2 = 40.056858;
double mLon2 = 116.308194;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.demo25_open_baidumap);
ListView mListView = FindViewById<ListView>(Resource.Id.listView_openBaiduMap);
mListView.Adapter = new OpenBaiduMapListAdapter(this, GetData());
mListView.ItemClick += (s, e) =>
{
switch (e.Position)
{
case : startNavi(); break;
case : startPoiNearbySearch(); break;
case : startPoiDetails(); break;
case : startRoutePlanWalking(); break;
case : startRoutePlanDriving(); break;
case : startRoutePlanTransit(); break;
case : startWalkingNavi(); break;
case : startBikingNavi(); break;
default: break;
}
};
} private List<string> GetData()
{
List<string> data = new List<string>()
{
"启动百度地图导航(Native)",
"启动百度地图Poi周边检索",
"启动百度地图Poi详情页面",
"启动百度地图步行路线规划",
"启动百度地图驾车路线规划",
"启动百度地图公交路线规划",
"启动百度地图步行导航",
"启动百度地图骑行导航"
};
return data;
} /// <summary>启动百度地图导航(Native)</summary>
public void startNavi()
{
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
NaviParaOption para = new NaviParaOption()
.InvokeStartPoint(pt1).InvokeEndPoint(pt2)
.InvokeStartName("天安门").InvokeEndName("百度大厦");
try
{
BaiduMapNavigation.OpenBaiduMapNavi(para, this);
}
catch (BaiduMapAppNotSupportNaviException e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图步行导航(Native)</summary>
public void startWalkingNavi()
{
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
NaviParaOption para = new NaviParaOption()
.InvokeStartPoint(pt1).InvokeEndPoint(pt2)
.InvokeStartName("天安门").InvokeEndName("百度大厦");
try
{
BaiduMapNavigation.OpenBaiduMapWalkNavi(para, this);
}
catch (BaiduMapAppNotSupportNaviException e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图骑行导航(Native)</summary>
public void startBikingNavi()
{
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
NaviParaOption para = new NaviParaOption()
.InvokeStartPoint(pt1).InvokeEndPoint(pt2)
.InvokeStartName("天安门").InvokeEndName("百度大厦");
try
{
BaiduMapNavigation.OpenBaiduMapBikeNavi(para, this);
}
catch (BaiduMapAppNotSupportNaviException e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图Poi周边检索</summary>
public void startPoiNearbySearch()
{
LatLng ptCenter = new LatLng(mLat1, mLon1); // 天安门
PoiParaOption para = new PoiParaOption()
.InvokeKey("天安门")
.InvokeCenter(ptCenter)
.InvokeRadius();
try
{
BaiduMapPoiSearch.OpenBaiduMapPoiNearbySearch(para, this);
}
catch (Exception e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图Poi详情页面</summary>
public void startPoiDetails()
{
PoiParaOption para = new PoiParaOption().InvokeUid("65e1ee886c885190f60e77ff"); // 天安门
try
{
BaiduMapPoiSearch.OpenBaiduMapPoiDetialsPage(para, this);
}
catch (Exception e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图步行路线规划</summary>
public void startRoutePlanWalking()
{
LatLng ptStart = new LatLng(34.264642646862, 108.95108518068);
LatLng ptEnd = new LatLng(mLat2, mLon2);
RouteParaOption para = new RouteParaOption()
.InvokeStartPoint(ptStart)
.InvokeEndName("大雁塔")
.InvokeCityName("西安");
try
{
BaiduMapRoutePlan.OpenBaiduMapWalkingRoute(para, this);
}
catch (Exception e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图驾车路线规划</summary>
public void startRoutePlanDriving()
{
LatLng ptStart = new LatLng(34.264642646862, 108.95108518068);
LatLng ptEnd = new LatLng(mLat2, mLon2);
RouteParaOption para = new RouteParaOption()
.InvokeStartPoint(ptStart)
.InvokeEndName("大雁塔")
.InvokeCityName("西安");
try
{
BaiduMapRoutePlan.OpenBaiduMapDrivingRoute(para, this);
}
catch (Exception e)
{
ShowDialog(e.Message);
}
} /// <summary>启动百度地图公交路线规划</summary>
public void startRoutePlanTransit()
{
LatLng ptStart = new LatLng(mLat1, mLon1);
LatLng ptEnd = new LatLng(mLat2, mLon2);
RouteParaOption para = new RouteParaOption()
.InvokeStartName("天安门").InvokeEndPoint(ptStart)
.InvokeBusStrategyType(RouteParaOption.EBusStrategyType.BusRecommendWay);
try
{
BaiduMapRoutePlan.OpenBaiduMapTransitRoute(para, this);
}
catch (Exception e)
{
ShowDialog(e.Message);
}
} protected override void OnDestroy()
{
base.OnDestroy();
BaiduMapNavigation.Finish(this);
BaiduMapRoutePlan.Finish(this);
BaiduMapPoiSearch.Finish(this);
} /// <summary>提示未安装百度地图app或app版本过低</summary>
public void ShowDialog(string message)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog dialog = null;
builder.SetMessage("您尚未安装百度地图app或app版本过低,点击确认安装?");
builder.SetTitle("提示");
builder.SetPositiveButton("确认", delegate
{
dialog.Dismiss();
OpenClientUtil.GetLatestBaiduMapApp(this);
});
builder.SetNegativeButton("取消", delegate
{
dialog.Dismiss();
});
dialog = builder.Create();
dialog.Show();
} private class OpenBaiduMapListAdapter : BaseAdapter
{
List<string> list;
Demo25OpenBaiduMap a;
public OpenBaiduMapListAdapter(Demo25OpenBaiduMap a, List<string> list)
{
this.a = a; this.list = list;
}
public override int Count
{
get { return list.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
convertView = View.Inflate(a, Resource.Layout.demo_info_item, null);
TextView title = convertView.FindViewById<TextView>(Resource.Id.title);
TextView desc = convertView.FindViewById<TextView>(Resource.Id.desc);
desc.Visibility = ViewStates.Invisible;
title.Text = list[position];
return convertView;
}
public override Java.Lang.Object GetItem(int position)
{
return list[position];
}
public override long GetItemId(int position)
{
return position;
}
}
}
}

3、修改MainActivity.cs文件

在MainActivity.cs文件的demos字段定义中,去掉【示例25】下面的注释。

在手机上运行观察调启效果。

【Android】3.25 示例25--调启百度地图的更多相关文章

  1. 【Android】3.0 第3章 百度地图及其应用--预备知识

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.概述 这一章先来点有意思的百度地图应用示例,然后再分章详细介绍用C#开发Android App的各种基本技 ...

  2. H5端调起百度地图、腾讯地图app

    来自一个需求的总结: 在微信公众号中根据地图上的marker和label,或者搜索结果点击调起地图APP进行导航. 一开始是使用百度地图进行开发,后面转腾讯是因为微信不允许不是自家或者合作方的APP在 ...

  3. iOS地图集成示例:百度地图POI检索

    一.集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤) 1.登录  http://lbsyun.baidu.com  百度地图开发者平台,获取SDK和集成文档. 2.百度地图可以提供的 ...

  4. iOS开发---集成百度地图完善版

    一.成为百度的开发者.创建应用 http://developer.baidu.com/map/index.php?title=首页 (鼠标移向 然后选择你的项目需要的功能 你可以在里面了解到你想要使用 ...

  5. IOS百度地图语音导航

    VoiceNavigationViewController.m * 客户端需安装百度导航地图 #import "VoiceNavigationViewController.h" # ...

  6. android 之 百度地图

    简介 百度地图Android定位SDK为基于移动客户端开发LBS应用提供基础定位能力. 功能介绍 功能介绍: 地图展示:包括2D图.卫星图.3D图地图展示. 地图操作:提供控制平移.缩放.底图旋转.变 ...

  7. 地图调起URI API(通过连接直接调用百度地图)

    网站:http://lbsyun.baidu.com/index.php?title=uri/api/web 地图调起URI API 百度地图URI API是为开发者提供直接调起百度地图产品(百度We ...

  8. Android Studio 百度地图导航

    配置就不再多说了,上一篇已经详细说过了,这次就是根据经纬度坐标做地图导航,路径规划.直接上代码: package com.example.appview.mian_page.Frament.Anzhu ...

  9. Android中调用百度地图

    一.调用百度地图 --第一种方法 1.下载百度地图SDK SDK可以拆分下载,需要使用那一部分功能就下载相应包含的SDK,如下图 核心的的jar 和so包,放在工程中的libs目录下 2.申请key ...

随机推荐

  1. 如何设置qt creator的快捷键

    如何设置qt creator快捷键 以设置设置edit - select encoding的快捷键为例 1. tools - options - environment - keyborad 2.在搜 ...

  2. JavaScript简述一

    一.什么时JavaScript JavaScript是一种具有面向对象能力的,解释型的设计语言,更具体一点,它是基于圣明和事件驱动并具有相对安全必的客户端脚本语言,因为它不需要在一个语言环境下运行,只 ...

  3. 通过Servlet生成验证码图片(转)

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类, ...

  4. C# 编程实现串口通信

    http://blog.sina.com.cn/s/blog_6c67dab30101p3vn.html ----------------------------------------------- ...

  5. Docker网络一览

    转自:http://dockone.io/article/1143 [编者的话]本文是Nuage Networks公司Filip Verloy的一篇博文,简介了一下Docker网络情况,单主机的四种模 ...

  6. 关于zookeeper的自我解惑

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据: http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/  ...

  7. Cocos2d-x3.0 iOS 一键编译多个target并打包ipa。

    1.编写app打包为ipa的 shell脚本.将以下代码保存为app2ipa.sh. #!/bin/sh m_appPath="" m_ipaPath="" m ...

  8. java 如何查看jdk版本&位数

      java 如何查看jdk版本&位数 CreateTime--2018年4月22日18:20:18 Author:Marydon 方式一:通过dos命令实现 win+R-->cmd-- ...

  9. JavaScript 设计模式之命令模式

    一.命令模式概念解读 1.命令模式概念文字解读 命令模式(Command)的定义是:用来对方法调用进行参数化处理和传送,经过这样处理过的方法调用可以在任何需要的时候执行.也就是说该模式旨在将函数的调用 ...

  10. MFC异常处理的问题

    参考文献:http://technet.microsoft.com/zh-cn/library/t078xe4f(v=vs.85).aspx MFC中异常处理的语法和语义构建在标准C++异常处理语法和 ...