基于百度地图API的LBS应用开发研究

基于百度地图API的LBS应用开发研究
基于百度地图API的LBS应用开发研究

基于百度地图API的LBS应用开发研究

2015年11月11日

目录

第一章LBS概述 (1)

1.1 LBS的基本概念 (1)

1.2 LBS系统的主要构成 (1)

1.3 LBS的现有模式 (1)

1.3.1休闲娱乐模式 (1)

1.3.2生活服务模式 (2)

1.3.3社交模式 (3)

1.3.4商业型模式 (3)

第二章利用Visual Studio创建Windows应用窗体应用程序调用查看百度地图.4

2.1模块的设计 (4)

2.2开发设计过程详解 (5)

第三章基于Bing Maps开发LBS App (14)

3.1 Bing Maps介绍 (14)

3.2 Windows 8中获取当前位置 (15)

第四章在Windows store app中使用百度地图 (19)

第五章Android 百度地图开发 (26)

第一章LBS概述

1.1 LBS的基本概念

基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。

它包括两层含义:首先是确定移动设备或用户所在的地理位置;其次是提供与位置相关的各类信息服务。意指与定位相关的各类服务系统,简称"定位服务",另外一种叫法为MPS-Mobile Position Services, 也称为"移动定位服务"系统。如找到手机用户的当前地理位置,然后在武汉市8494平方公里范围内寻找手机用户当前位置处1公里范围内的宾馆、影院、图书馆、加油站等的名称和地址。所以说LBS就是要借助互联网或无线网络,在固定用户或移动用户之间,完成定位和服务两大功能。

1.2 LBS系统的主要构成

总体上看LBS由移动通信网络和计算机网络结合而成,两个网络之间通过网关实现交互。移动终端通过移动通信网络发出请求,经过网关传递给LBS服务平台;服务平台根据用户请求和用户当前位置进行处理。并将结果通过网关返回给用户。

其中移动终端可以是移动电话、个人数字助理(Personal Digital Assistant, PDA)、手持计算机(Pocket PC),也可以是通过Internet通讯的台式计算机(desktop PC)。服务平台主要包括WEB服务器(Web Server)、定位服务器(Location Server)和LDAP(Lightweight Directory Access Protocol)服务器。

1.3 LBS的现有模式

1.3.1休闲娱乐模式

(1)签到(Check-In)模式:主要是以Foursquare为主,还有一些国外同类服务还有Gowalla、Whrrl等,而国内则有:嘀咕、玩转四方、街旁、开开、多乐趣、在哪等几十家。

该模式的基本特点如下:

1) 用户需要主动签到(Check-In)以记录自己所在的位置

2) 通过积分、勋章以及领主等荣誉激励用户Check-In,满足用户的虚荣感

3) 通过与商家合作,对获得的特定积分或勋章的用户提供优惠或折扣的奖励,同时也是对商家品牌的营销

4) 通过绑定用户的其它社会化工具,以同步分享用户的地理位置信息

5) 通过鼓励用户对地点(商店、餐厅等)进行评价以产生优质内容

该模式的最大挑战在于要培养用户每到一个地点就会签到(Check-In)的习惯。而它的商业模式也是比较明显,可以很好地为商户或品牌进行各种形式的营销与推广。而国内比较活跃的街旁网现阶段则更多地与各种音乐会、展览等文艺活动合作,慢慢向年轻人群推广与渗透,积累用户。

(2)大富翁游戏模式:国外的代表是Mytown,国内则是16Fun。主旨是游戏人生,可以让用户利用手机购买现实地理位置里的虚拟房产与道具,并进行消费与互动等将现实和虚拟真正进行融合的一种模式。这种模式的特点是更具趣味性,可玩性与互动性更强,比Check-In模式更具粘性,但是由于需要对现实中的房产等地点进行虚拟化设计,开发成本较高,并且由于地域性过强导致覆盖速度不可能很快。在商业模式方面,除了借鉴Check-In模式的联合商家营销外,还可提供增值服务,以及类似第二人生(Second Life)的植入广告等。

1.3.2生活服务模式

(1)周边生活服务的搜索:以点评网或者生活信息类网站与地理位置服务结合的模式,代表大众点评网、台湾的“折扣王”等。主要体验在于工具性的实用特质,问题在于信息量的积累和覆盖面需要比较广泛。

(2)与旅游的结合:旅游具有明显的移动特性和地理属性,LBS和旅游的结合是十分切合的。分享攻略和心得体现了一定的社交性质,代表是游玩网。

(3)会员卡与票务模式:实现一卡制,捆绑多种会员卡的信息,同时电子

化的会员卡能记录消费习惯和信息,充分的使用户感受到简捷的形式和大量的优惠信息聚合。代表是国内的“Mokard(M卡)”、还有票务类型的Eventbee。这些移动互联网化的应用正在慢慢渗透到生活服务的方方面面,使我们的生活更加便利与时尚。

1.3.3社交模式

(1)地点交友,即时通讯:不同的用户因为在同一时间处于同一地理位置构建用户关键,代表是兜兜友。

(2)以地理位置为基础的小型社区:地理位置为基础的小型社区,代表是“区区小事”

1.3.4商业型模式

(1)LBS+团购:两者都有地域性特征,但是团购又有其差异性,如何结合?美国的GroupTabs给我们带来了新的想象:GroupTabs的用户到一些本地的签约商家,比如一间酒吧,到达后使用GroupTabs的手机应用进行Check In。当Check In的数量到达一定数量后,所有进行过Check In的用户就可以得到一定的折扣或优惠。

(2)优惠信息推送服务:Getyowza就为用户提供了基于地理位置的优惠信息推送服务,Getyowza的盈利模式是通过和线下商家的合作来实现利益的分成。

(3)店内模式: ShopKick将用户吸引到指定的商场里,完成指定的行为后便赠送其可兑换成商品或礼券的虚拟点数。

第二章利用Visual Studio创建Windows应用窗体应用程序调用查看百度地图

2.1模块的设计

LBS无线定位平台模块构成:

(1)定位网络终端设别提供商

PC和GPS在定位中有着重要的角色,通过电脑的GPS 定位功能可以搜索用户需要的地址信息以及所需地附近的一些服务信息。

(2)移动运营商

整个过程中,移动网络是必不可少的,没有无线网络的信息传递,定位信息不可能及时获取。

(3)地图数据的获取

LBS云是百度地图针对LBS开发者推出的平台级服务,结合已有的地图API和SDK 服务,通过开放服务端存储和计算能力,提供海量位置数据存储、检索、展示一体化解决方案。在此次设计中就是通过百度地图开放平台来获取地址的经纬度,以及在搜索地的附近车流量情况。

2.2开发设计过程详解

通过使用Visual Studio建立一个新项目。我们使用的软件版本是Visual Studio 2015,如图2.1所示。

图2.1 Visual Studio 2015新建项目界面

我们的目标是在应用窗口程序中设计搜索界面,然后在程序中将部分地点的经纬度输入,并且调用HTML文件,其中,HTML文件内包含Map实例,车流量信息,定位标记以及定位时屏幕的大小缩放等信息。我们的工程目录结构如图2.2所示。

图2.2 工程目录结构

在程序中,写入查询地址的经纬度信息,地图显示中,将交管局发布的流量信息,以图标形式标注在地图上。根据拥塞程度分成三级,其中红色代表“拥挤”、橙色代表“缓行”、绿色代表“畅通”。而且这个信息还能每隔几分钟自动更新一次,换句话说,我们只要打开网页便能随时获取到最新的路况信息,根本无需用户参与。

Form1.cs的程序如下:

using System;

using System.IO;

using System.Collections.Generic;

using https://www.360docs.net/doc/ac1152712.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace BAIDUMap

{

public partial class Form1 : Form

{

double x;

double y;

AutoSizeFormClass asc = new AutoSizeFormClass();

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

asc.controllInitializeSize(this);

try

{

webBrowser1.Url = new Uri(https://www.360docs.net/doc/ac1152712.html,bine(Application.StartupPath, "baidum.html"));

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text == "奥山世纪广场")

{

x = 114.368724;

y = 30.622801;

}

else if (textBox1.Text == "沃尔玛(奥山世纪城店)")

{

x = 114.368574;

y = 30.6227623;

}

else if (textBox1.Text == "仟吉西饼")

{

x = 114.379748;

y = 30.634151;

}

else if (textBox1.Text == "武钢宾馆")

{

x = 114.37392;

y = 30.626375;

}

else if (textBox1.Text == "武商众园广场")

{

x = 114.384313;

y = 30.632419;

}

else if (textBox1.Text == "武汉科技大学")

{

x = 114.37746;

y = 30.628216;

}

webBrowser1.Document.InvokeScript("setLocation", new object[] { x, y });

}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

webBrowser1.Document.InvokeScript("setLocation", new object[] { 114.37746, 30.628216 });

}

private void Form1_SizeChanged(object sender, EventArgs e)

{

asc.controlAutoSize(this);

}

}

}

Form1.Designer.cs的程序如下:

namespace BAIDUMap

{

partial class Form1

{

///

/// 必需的设计器变量。

///

private https://www.360docs.net/doc/ac1152712.html,ponentModel.IContainer components = null;

///

/// 清理所有正在使用的资源。

///

/// 如果应释放托管资源,为true;否则为false。

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows 窗体设计器生成的代码

///

/// 设计器支持所需的方法- 不要

/// 使用代码编辑器修改此方法的内容。

///

private void InitializeComponent()

{

this.textBox1 = new System.Windows.Forms.TextBox();

this.button1 = new System.Windows.Forms.Button();

https://www.360docs.net/doc/ac1152712.html,bel1 = new https://www.360docs.net/doc/ac1152712.html,bel();

this.webBrowser1 = new System.Windows.Forms.WebBrowser();

this.SuspendLayout();

//

// textBox1

//

this.textBox1.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

this.textBox1.ForeColor = System.Drawing.Color.Black;

this.textBox1.Location = new System.Drawing.Point(84, 1);

this.textBox1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);

https://www.360docs.net/doc/ac1152712.html, = "textBox1";

this.textBox1.Size = new System.Drawing.Size(188, 30);

this.textBox1.TabIndex = 1;

this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;

//

// button1

//

this.button1.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

this.button1.Location = new System.Drawing.Point(308, -1);

this.button1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);

https://www.360docs.net/doc/ac1152712.html, = "button1";

this.button1.Size = new System.Drawing.Size(86, 30);

this.button1.TabIndex = 2;

this.button1.Text = "查询";

https://www.360docs.net/doc/ac1152712.html,eVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// label1

//

https://www.360docs.net/doc/ac1152712.html,bel1.AutoSize = true;

https://www.360docs.net/doc/ac1152712.html,bel1.Font = new System.Drawing.Font("宋体", 15F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(134)));

https://www.360docs.net/doc/ac1152712.html,bel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));

https://www.360docs.net/doc/ac1152712.html,bel1.Location = new System.Drawing.Point(14, 9);

https://www.360docs.net/doc/ac1152712.html,bel1.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);

https://www.360docs.net/doc/ac1152712.html, = "label1";

https://www.360docs.net/doc/ac1152712.html,bel1.Size = new System.Drawing.Size(72, 20);

https://www.360docs.net/doc/ac1152712.html,bel1.TabIndex = 3;

https://www.360docs.net/doc/ac1152712.html,bel1.Text = "地点:";

//

// webBrowser1

//

this.webBrowser1.Location = new System.Drawing.Point(2, 34);

this.webBrowser1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);

this.webBrowser1.MinimumSize = new System.Drawing.Size(33, 33);

https://www.360docs.net/doc/ac1152712.html, = "webBrowser1";

this.webBrowser1.Size = new System.Drawing.Size(910, 504);

this.webBrowser1.TabIndex = 4;

this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBro wser1_DocumentCompleted);

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 20F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(913, 517);

this.Controls.Add(this.webBrowser1);

this.Controls.Add(https://www.360docs.net/doc/ac1152712.html,bel1);

this.Controls.Add(this.button1);

this.Controls.Add(this.textBox1);

this.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

this.ForeColor = System.Drawing.Color.Blue;

this.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);

https://www.360docs.net/doc/ac1152712.html, = "Form1";

this.Text = "定位系统";

this.Load += new System.EventHandler(this.Form1_Load);

this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);

this.ResumeLayout(false);

this.PerformLayout();

}

#endregion

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.Button button1;

private https://www.360docs.net/doc/ac1152712.html,bel label1;

private System.Windows.Forms.WebBrowser webBrowser1;

}

}

除此之外,还编写了一个窗口大小适应的程序。

点击调试,启动生成生成项目,就成功了!

如图2.3所示。

图2.3 应用程序界面

第三章基于Bing Maps开发LBS App

3.1 Bing Maps介绍

Bing Maps for Windows Store apps为Windows Store应用程序提供了地图方面很好的用户体验,开发者可以使用Bing Maps地图控件为Windows Store应用程序加入最新的路线图、鸟瞰图和低角度高清晰图像。

表2.1 Bing Maps API

Bing Maps

AJAX控件7.0版Bing Maps AJAX控件7.0版是最新版本的Bing Maps Javascript API,将AJAX地图控件与Bing Maps REST服务和Bing空间数据服务相结合,并使用最新的图像和定位功能来创建功能强大的Web 站点和移动应用。请参见Bing Maps AJAX控件7.0版交互式SDK。

Windows Store应用程序的Bing Maps Windows Store应用程序的Bing Maps控件为Windows Store应用程序集成了最新的路线图、鸟瞰图以及低角度高分辨率图像。

Bing Maps REST Services Bing Maps REST服务使用REST URL来执行下述任务:创建地图图钉、地理编码地址、检索图像元数据或者计算路径。

Bing空间数据服务Bing空间数据服务使用REST URL进行地理编码以及解码大量空间数据集合并创建查询数据源,数据源包含一个用户定义的实体类型,其中包含了空间数据集。你可以创建一组商店的数据源,然后在其中查找附近商店的位置。

Maps WPF控件Bing Maps WPF控件SDK让开发者将Bing地图整合到富Windows Presentation Foundation(WPF)应用程序中,使用“软件+服务”的方式,您的使用Bing云计算架构的WPF应用程序可以使用Bing Maps WPF控件获取最新的Bing地图图像,该控件同时也支持Microsoft Surface的触摸界面,可以创建丰富的触摸功能的应用程序。要开始使用Bing Maps WPF控件,请下载Bing Maps Windows Presentation Foundation控件SDK。

新建一个Windows Store应用程序,添加命名空间

xmlns:bm="using:Bing.Maps",将一下XAML代码放入Tag标签内,并用你的Bing Maps Key替换INSERT_YOUR_BING_MAPS_KEY占位符。

执行程序,地图控件就会出现。同Windows Phone中的地图控件一样,Windows Store应用程序中的地图控件也可以通过设置各种参数对其进行更加精细化的

设置。

3.2 Windows 8中获取当前位置

(1)打开Microsoft Visual Studio 2012

打开Visual Studio 2012。

(2)创建一个新项目

创建新项目,从“Visual C#”>“Windows 应用商店”项目类型中选择一个“应用程序”。

(3)在应用中插入C# 代码

打开项目的MainPage.xaml.cs 文件并将现有的代码替换为下面的代码。

using System;

using System.Collection.Generic;

using System.Linq;

using System.Threading.Tasks;

using Windows.Foundation;

using Windows.UI.DirectUI;

using Windows.UI.DirectUI.Controls;

using Windows.UI.DirectUI.Data;

using Windows.Devices.Geolocation;

namespace Application1

{

partial class MainPage

{

Geolocator geo = null;

public MainPage()

{

InitializeComponent();

}

private async void button1_Click(object sender, RoutedEventArgs e)

{

if (geo == null)

{

geo = new Geolocator();

}

Geoposition pos = await geo.GetGeopositionAsync();

textblockLatitude.Text = "Latitude: " + https://www.360docs.net/doc/ac1152712.html,titude.ToString(); textblockLongitude.Text = "Longitude: " + pos.Coordinate.Longitude.ToString(); textblockAccuracy.Text = "Accuracy: " + pos.Coordinate.Accuracy.ToString();

}

}

}

(4)在应用中插入XAML代码

打开名为MainPage.xaml 的文件,然后将下面的XML 复制到此文件中(替换原来的内容)。

style="line-height:1.5;font-family:'sans serif', tahoma, verdana, helvetica;font-size:10pt;">

xmlns="https://www.360docs.net/doc/ac1152712.html,/winfx/2006/xaml/presentation"

xmlns:x="https://www.360docs.net/doc/ac1152712.html,/winfx/2006/xaml"

xmlns:d="https://www.360docs.net/doc/ac1152712.html,/expression/blend/2008"

xmlns:mc="https://www.360docs.net/doc/ac1152712.html,/markup-compatibility/2006"

mc:Ignorable="d"

d:DesignHeight="768" d:DesignWidth="1366">

相关主题
相关文档
最新文档