分类: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. 【CSWS2014 Main Conference】Some Posters

    随机选了几张POSTER,之前没做过POSTER的同学可以看一下文字.图片.布局以及每个版块的小标题,以后如果需要做poster就容易多了. 据说这种Poster一张需要60RMB左右. 其中第5幅是 ...

  2. STL与多线程+写时拷贝

    http://blog.csdn.net/liuxuejiang158blog/article/details/13251379 STL并不是线程安全的,当多个线程同时读取STL时没什么问题.当多个线 ...

  3. python之函数用法globals()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法globals() #globals() #说明:在当前作用域下,查看全局变量 ''' ...

  4. mysql 设置密码

    法一: 格式:mysqladmin -u用户名 -p旧密码 password 新密码 方法二:1.用root 进入mysql后mysql>set password =password('你的密码 ...

  5. 【mysql】mysql中单列索引、联合索引、Join联表查询建立索引 和 EXPLAIN的分析使用

    2.创建联合索引,从坐到右分别为:userid.openId.name   2. #### --------------  多表联合查询 update 2019/03/13  ------------ ...

  6. (四)Linux Shell编程——输入输出重定向

    Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 1. 输出重定向 命令的输出不 ...

  7. 【转载】MyEclipse使用指南(精简版)

    1.安装 2.注册 3.配置 window ----> preferences (1)配置 JDK java--->Installed JREs --> Add ---> JR ...

  8. 在sys用户下执行的sql脚本创建了摁多个表和序列, 怎么回退?

    一个个删除, 暂时不会别的方法...

  9. VI打开和编辑多个文件的命令

    http://www.05112.org/school/xtrm/linux/2013/0625/4280.htmlVI打开和编辑多个文件的命令 可分两种情况: 1.在同一窗口中打开多个文件:   v ...

  10. Java虚拟机学习 - 查看JVM参数及值的命令行工具(6)

    查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件  查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...