分类: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. 45个很实用的 Oracle 查询语句小结

     这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...

  2. ios8 xcode6 下的启动界面设置和图标设置

    IOS8 我试了网上不少设置启动动画的,不知道是不是我弄错了还是怎么的,反正启动不了,后来在code4论坛找到了这个: 启动屏幕:LaunchScreen.xib文件 桌面图标等相关app图片:Ima ...

  3. ZH奶酪:PHP安装扩展imagick

    明明几个简单命令就能搞定,但是按照网上的方法就是不行,弄了一天,最后发现只需要两行命令,而且不需要修改什么php.ini: sudo apt-get install php5-imagick sudo ...

  4. 微信小程序-配置解答

    微信小程序启动页面: Pages:  index / logs 有 index和logs的页面,每个页面中都有独立的js逻辑,wxml负责页面内容,wxss负责样式. utils app.js app ...

  5. Web 前端攻防(2014版)-baidu ux前端研发部

    http://fex.baidu.com/articles/page2/ Web 前端攻防(2014版) zjcqoo | 20 Jun 2014 禁止一切外链资源 外链会产生站外请求,因此可以被利用 ...

  6. hadoop safemode error

    http://www.cnblogs.com/hustcat/archive/2010/06/30/1768506.html 1.safemode bin/hadoop fs -put ./input ...

  7. 栈溢出笔记1.3 准备Shellcode

    经过1.1和1.2节的讲述,我们已经知道了怎样更改EIP的值. 程序运行函数之后将跳转到我们设定的位置開始运行,因此,我们须要准备一个自己的程序,接手后面的工作.这是一个什么样的程序?是一个C语言编写 ...

  8. python中的静态成员方法和类成员方法

    Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问 ...

  9. js setInterval() 用法示例

      Created by Marydon on 1.定义 语法:setInterval(param1,param2) param1 要调用的函数或要执行的代码串. param2 周期性调用param1 ...

  10. SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0

    假设你正在使用Android Studio工具进行开发,且将版本号更新到0.6.0的时候.莫名的出现这种错误 SDK Build Tools revision (19.0.3) is too low ...