将基于位置的服务添加到应用程序

将基于位置的服务添加到应用程序

本教程介绍如何将基于位置的服务添加到一个普通的 J2EE 应用程序。

大约 45 分钟

本教程包括下列主题:

概述
前提条件
创建一个普通的 J2EE 应用程序
针对基于位置的服务配置 Oracle 应用服务器
向 J2EE 应用程序添加基于位置的功能
总结
相关信息

将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)

注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。

OracleAS Wireless 基于位置的服务 (LBS) 平台提供了一个简单的、集成的解决方案,可用 LBS 功能强化应用程序。使用 OracleAS Wireless LBS 功能,您可以将地图、行驶方向以及黄页中的信息添加到应用程序。

 

前提条件

开始本教程之前,您应该:

1.

已经安装了 Oracle JDeveloper 10g(版本 9.0.5.1)

2. 已经安装了 Oracle 应用服务器 10g 基础架构
3. 已经安装了 Oracle 应用服务器 10g Portal 和 Wireless

您可以先创建一个普通的 J2EE 应用程序,然后再向其添加基于位置的功能。要创建一个简单的 J2EE 应用程序,请执行下列步骤:

1.

启动 JDeveloper。在 Applications - Navigator 中,右键单击 Applications 并从快捷菜单中选择 New Application Workspace

将鼠标移到该图标上可以查看该图像


2.

Create Application Workspace 对话框中,将 Application Name 更改为 LBSApps。Directory Name 也将随之更改。单击 OK

将鼠标移到该图标上可以查看该图像

您将看到创建了一个名为 Project 的项目。

将鼠标移到该图标上可以查看该图像

3.

在 System - Navigator 中,右键单击该项目并从上下文菜单中选择 New。在 New Gallery 中,展开 Categories 下的 Web Tier

将鼠标移到该图标上可以查看该图像

4.

从 Categories 中选择 JavaServer Pages (JSP),然后从 Items 中选择 JSP Page。单击 OK

将鼠标移到该图标上可以查看该图像

5.

在 File Name 域中输入 MapAndRoute.jsp,然后单击 OK

将鼠标移到该图标上可以查看该图像

您将看到 MapAndRoute.jsp 的 Design 视图和 Source 视图。您还将在右侧看到组件模板、Data Controls 以及 Property Inspector。您可以选择关闭组件模板和 Property Inspector。

将鼠标移到该图标上可以查看该图像

6.

单击 Source 选项卡,查看 MapAndRoute.jsp 的源代码。

将鼠标移到该图标上可以查看该图像

复制以下代码并将其粘贴到代码编辑器以替换现有代码:

<%@ page contentType="text/html;charset=windows-1252"%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
    <title>Welcome!!</title>
  </head>
  <body>
    <%  String user = request.getParameter("user"); %>
    <H3>Welcome 
      <%=  (user==null) ? "http://www.oracle.com/technology/obe/obe_as_1012/wireless/location/index.html" : user %>
    </H3>You have requested for today's date! 
    <P>
      <B>Today is 
        <%=  new java.util.Date() %>. Have a great day!!
      </B>
    </P>
    <B>Please enter your name:</B>
    <form method="get">
      <input type="text" name="user" size="15"/>
      <input type="submit" value="Submit Name"/>
    </form>
  </body>
</html>

将鼠标移到该图标上可以查看该图像

7.

右键单击 MapAndRoute.jsp 并选择 Run 来运行该 JSP 文件。

将鼠标移到该图标上可以查看该图像

8.

您将看到该应用程序运行在默认浏览器上。在文本“Please enter your name”下面的文本域中输入您的姓名。单击 Submit Name 查看结果。

将鼠标移到该图标上可以查看该图像

将鼠标移到该图标上可以查看该图像

您需要先在 Oracle 应用服务器上配置内容提供程序,然后才能在应用程序上使用 LBS 功能。本部分介绍如何配置 eLocation 地理编码、地图绘制以及路线选择内容提供程序。要针对基于位置的服务配置 Oracle 应用服务器,请执行以下步骤:

1.

打开浏览器,输入以下 URL:

http://<hostname>.<domain>:<em_port>

注意:管理端口号在服务器安装期间自动分配,可能由于您的安装会略有不同。当系统提示您输入用户名和口令时,请输入 ias_admin 和您在安装期间输入的口令。

将鼠标移到该图标上可以查看该图像

2.

在企业管理器 10g Application Server Control 中,单击中间层实例的名称可查看实例主页。

将鼠标移到该图标上可以查看该图像

向下滚动至 System Components 表,单击 Wireless 链接。

将鼠标移到该图标上可以查看该图像

3.

单击 Site Administration 选项卡。

将鼠标移到该图标上可以查看该图像

4.

展开 Component Configuration,单击 Location-Related 下的 Location Services

将鼠标移到该图标上可以查看该图像

5.

此时显示 Location Services 页面。转至 Location Service Configurations 部分,单击
Geocoding Configuration

将鼠标移到该图标上可以查看该图像

6.

为了使您的应用程序支持 LBS 地理编码功能,需要配置一个地理编码提供程序。此处,我们配置 Oracle eLocation。注意,Oracle eLocation 只能用于测试和演示目的。单击 Add Another Row,为地理编码提供程序创建一个新的空白行。输入以下信息,单击 Apply。请注意,只有在您重新启动 Wireless 服务器后,新配置才会生效。我们将在配置完所有提供程序后再重新启动。

	Provider Name: eLocation
	Preference: 1
Provider Implementation Class Name: oracle.panama.spatial.core.
geocoder.GeocoderImplXMLProvider URL: http://elocation.oracle.com/elocation/lbs Username: usr Password: pwd ISO Locales: ;US;unknown;

将鼠标移到该图标上可以查看该图像

7.

单击路径式导航栏中的 Location Services,导航回到 Location Services 页面。

将鼠标移到该图标上可以查看该图像

转至 Location Service Configurations 表,单击 Mapper Provider Configuration

将鼠标移到该图标上可以查看该图像

8.

为了使您的应用程序支持 LBS 地图绘制功能,需要配置一个地图绘制提供程序。此处,我们要配置 Oracle eLocation。注意,Oracle eLocation 只能用于测试和演示目的。单击 Add Another Row,为地图绘制提供程序创建一个新的空白行。输入以下信息,单击 Apply。请注意,只有在您重新启动 Wireless 服务器后,新配置才会生效。我们将在配置完所有提供程序后再重新启动。


	Provider Name: eLocation
	Preference: 1
 Provider Implementation Class Name: oracle.panama.spatial.core.mapper.
MapperImplXMLProvider URL: http://elocation.oracle.com/elocation/lbs Username: usr Password: pwd Parameters: us_base ISO Locales: ;US;unknown;

将鼠标移到该图标上可以查看该图像

9.

单击路径式导航栏中的 Location Services,导航回到 Location Services 页面。

将鼠标移到该图标上可以查看该图像

转至 Location Service Configurations 表,单击 Routing Configuration

将鼠标移到该图标上可以查看该图像

10.

为了使您的应用程序支持 LBS 路线选择功能,需要配置一个路线选择提供程序。此处,我们要配置 Oracle eLocation。注意,Oracle eLocation 只能用于测试和演示目的。单击 Add Another Row,为路线选择提供程序创建一个新的空白行。输入以下信息,单击 Apply。请注意,只有在您重新启动 Wireless 服务器后,新配置才会生效。我们将在配置完所有提供程序后再重新启动。


	Provider Name: eLocation
	Preference: 1
	Provider Implementation Class Names: oracle.panama.spatial.core.router
.RouterImplXMLProvider URL: http://elocation.oracle.com/elocation/lbs Username: usr Password: pwd Parameters: us_base ISO Locales: ;US;unknown;

将鼠标移到该图标上可以查看该图像

11.

单击路径式导航栏中的实例,导航回到企业管理器 10g Application Server Control 主页。

将鼠标移到该图标上可以查看该图像

重新启动 Wireless 服务器以便配置更改生效。在 System Components 表中,选中 Wireless 组件复选框,然后单击 Restart

将鼠标移到该图标上可以查看该图像

在系统提示您进行确认时,单击 Yes

将鼠标移到该图标上可以查看该图像

将鼠标移到该图标上可以查看该图像

将鼠标移到该图标上可以查看该图像

要向 J2EE 应用程序添加基于位置的功能,请执行下列步骤:

1.

首先,需要在 JDeveloper 中设置库路径以包括 LBS 所使用的类。右键单击 JDeveloper 项目并选择 Project Properties

将鼠标移到该图标上可以查看该图像

2.

在 Development 下面单击 Libraries,然后单击右侧框中的 New 为 LBS 添加新库。

将鼠标移到该图标上可以查看该图像

3.

在 Library Name 域中输入 Wireless。设置类路径,使其包括安装中的 wireless.jar。例如,C:\midtier_pw\wireless\lib\wireless.jar。单击 OK

将鼠标移到该图标上可以查看该图像

新库现在应显示在 Selected Libraries 列表中。单击 OK 关闭 Properties 窗口。

4.

在 MapAndRoute.jsp 中将以下行直接添加到 contentType 声明后面。为清晰起见,删除 <body> 标记之间的所有内容。右键单击该文件名并选择 Make,确保 MapAndRoute.jsp 编译成功。

<%@ page import="oracle.panama.spatial.SpatialManager"%>
<%@ page import="oracle.panama.model.Location"%>
<%@ page import="oracle.panama.spatial.geocoder.Geocoder"%>
<%@ page import="oracle.panama.spatial.mapper.Mapper"%>
<%@ page import="oracle.panama.imagex.ImageFormats"%>
<%@ page import="oracle.panama.spatial.router.Router"%>
<%@ page import="oracle.panama.spatial.router.RoutingResult"%>
<%@ page import="oracle.panama.spatial.router.RoutingOption"%>
<%@ page import="oracle.panama.spatial.router.RoutingSettings"%>
<%@ page import="java.util.Locale"%>

将鼠标移到该图标上可以查看该图像

将鼠标移到该图标上可以查看该图像

5.

在本例中,我们将创建两个位置,然后对其进行地理编码,将它们显示在地图上,并查找这两个位置之间的最佳路线。首先定义起始位置和终点位置。在 body 标记之间插入以下行。

<%
  // Create the source location object
  Location fromLoc =  SpatialManager.createLocation(
            null,                             //point
            "OracleHQ",                       //companyName
            "http://www.oracle.com/technology/obe/obe_as_1012/wireless/location/index.html",                               //houseNumber
            new String[] { "500 Oracle Parkway" }, //intersectingStreetNames
            null,                             //secondLine
            "Redwood City",                   //cityName
            "CA",                             //stateName
            "94065",                          //postalCode
            null,                             //postalCodeExt
            "US");                            //countryName
            
  // Create the destination location object
  Location toLoc =  SpatialManager.createLocation(
            null,                           //point
            "Hotel",                        //companyName
            "http://www.oracle.com/technology/obe/obe_as_1012/wireless/location/index.html",                             //houseNumber
            new String[] { "3000 Los Prados St" }, //intersectingStreetNames
            null,                           //secondLine
            "San Mateo",                    //cityName
            "CA",                           //stateName
            "9440",                         //postalCode
            null,                           //postalCodeExt
            "US");                          //countryName
%>

将鼠标移到该图标上可以查看该图像

6.

现在测试地理编码程序。将以下行直接插入地址声明后面。

<%
  // Get the geocoder
  Geocoder geocoder = SpatialManager.getGeocoder();

  // Geocode the locations
  L cation[] geocodedStart = geocoder.geocodeAddress(fromLoc,Geocoder.MATCH_MODE_TIGHT);
  Location[] geocodedEnd = geocoder.geocodeAddress(toLoc,Geocoder.MATCH_MODE_TIGHT);
%>
  You are located at:<br>
    Latitude: <%=(double)Math.round(geocodedStart[0].getLatitude()*1000) / 1000%><br>
    Longitude: <%=(double)Math.round(geocodedStart[0].getLongitude()*1000) / 1000%></h2>
  You want to get to:<br>
    Latitude: <%=(double)Math.round(geocodedEnd[0].getLatitude()*1000) / 1000%><br>
    Longitude: <%=(double)Math.round(geocodedEnd[0].getLongitude() * 1000) / 1000%></h2>

将鼠标移到该图标上可以查看该图像

7.

编译代码。为了快速部署,在以下文件夹中复制并粘贴 MapAndRoute.jsp

<midtier_home>\j2ee\OC4J_Wireless\applications\wireless\location-web

Access the application with the URL http://<hostname>.<domain>:<HTTP_Port>/location/MapAndRoute.jsp

将鼠标移到该图标上可以查看该图像

8.

现在地图绘制程序。将以下行直接插入地理编码程序测试后面。


<%
  // Get the mapper
  Mapper mapper = SpatialManager.getMapper();

  // Get the map URLs
  String startMapURL = mapper.getMapURL(fromLoc, ImageFormats.GIF, 400, 200, false);
  String endMapURL = mapper.getMapURL(toLoc, ImageFormats.GIF, 400, 200, false);
%>
  Here is your start location:<br>
    <img src=<%=startMapURL%>><br><br>
  Here is your destination location:<br>
    <img src=<%=endMapURL%>>

将鼠标移到该图标上可以查看该图像

9.

编译代码。在以下文件夹中复制并粘贴经过修改的 MapAndRoute.jsp

<midtier_home>\j2ee\OC4J_Wireless\applications\wireless\location-web

刷新步骤 7 中使用的应用程序浏览器窗口。eLocation-mapping 提供程序已生成了给定地址的地图。

将鼠标移到该图标上可以查看该图像

10.

现在测试路线选择程序。将以下行插入地图程序测试的末尾。

<%
  // Get the router
  Router router = SpatialManager.getRouter();

  // Basic routing settings: return mapURL, don't return route geometry
  RoutingSettings settings = new RoutingSettings(true, false);
  settings.setSecondaryOption(RoutingOption.overviewMapWidth,   "500");
  settings.setSecondaryOption(RoutingOption.overviewMapHeight,  "300");

  // Compute the route
  RoutingResult rres = router.computeRoute(fromLoc, toLoc, null, settings, Locale.US);

  %><br><br><br>Here are your driving directions:</br><%
  for (int i=0; i<rres.getManeuvers().length; i++)
  {
    %><%=rres.getManeuvers()[i].getNarrative()%><br><%
  }
  %><br><img src="<%=rres.getOverviewMapURL()[0]%>"><%
%>

将鼠标移到该图标上可以查看该图像

11.

编译代码。在以下文件夹中复制并粘贴修改的 MapAndRoute.jsp

<midtier_home>\j2ee\OC4J_Wireless\applications\wireless\location-web

刷新应用程序浏览器窗口。eLocation 路线选择提供程序已生成了行驶方向和请求路线的全景地图。单击此处获取整个 LBS 示例。

将鼠标移到该图标上可以查看该图像

使用 JDeveloper 创建简单的 JSP 页面

针对基于位置的服务配置 Oracle 应用服务器

修改 JSP 页面以添加以下基于位置的功能:

创建出发地点和目的地
对位置进行地理编码
显示位置的地图
显示到目的地的行驶方向

将应用程序 (JSP) 部署到应用服务器
运行应用程序以测试基于位置的服务

有关本 OBE 教程的问题,请在 OBE 论坛上张贴问题。

将鼠标置于该图标上可以隐藏所有的屏幕截图。

版权所有 © 2004 Oracle Corporation。保留所有权利。