Mapinfo China 罗兴祚

20
Page 1 Mapinfo China 罗罗罗 MapXtreme for Java 罗罗罗罗

description

MapXtreme for Java 开发基础. Mapinfo China 罗兴祚. 内容. 应用程序组织模式 MapXtreme for Java 主要构成部分 实现基本地图功能的核心代码分析 Servlet 简述 IDE 开发调试工具 典型例程分析与扩展 中间件演示. 应用程序组织模式. Mapxtreme for Java 程序模式 “ Thin” Client 瘦客户机/服务器模式 “Medium” Client 中等客户机/服务器模式 “Thick” Client 胖客户机/服务器模式. 应用程序组织模式. - PowerPoint PPT Presentation

Transcript of Mapinfo China 罗兴祚

Page 1: Mapinfo China   罗兴祚

Page 1

Mapinfo China 罗兴祚

MapXtreme for Java 开发基础

Page 2: Mapinfo China   罗兴祚

Page 2

内容内容 应用程序组织模式 MapXtreme for Java 主要构成部分 实现基本地图功能的核心代码分析 Servlet 简述 IDE 开发调试工具 典型例程分析与扩展 中间件演示

Page 3: Mapinfo China   罗兴祚

Page 3

应用程序组织模式应用程序组织模式 Mapxtreme for Java 程序模式

“Thin” Client 瘦客户机 / 服务器模式

“Medium” Client 中等客户机 / 服务器模式

“Thick” Client 胖客户机 / 服务器模式

Page 4: Mapinfo China   罗兴祚

Page 4

应用程序组织模式应用程序组织模式 “Thin” Client 瘦客户机 / 服务器模式特点

服务器端通过 Servlet 程序向客户机端提供 Image图片 (GIF)

客户机浏览器端只有 HTML 网页,并不需要写客户端的 Java 程序

开发此类程序需要知道如何在服务器端产生 HTML 网页

Page 5: Mapinfo China   罗兴祚

Page 5

应用程序组织模式应用程序组织模式 “Thick” Client 胖客户机 / 服务器模式特点

客户机浏览器端网页里含有 Applet 下载控件,需要客户机浏览器含有 Java 解释器

服务器端向客户机端传递的是矢量数据而不是位图数据,更适合于 Intranet

开发此类程序需要知道如何用 Java Beans 开发 Applet 程序

Page 6: Mapinfo China   罗兴祚

Page 6

应用程序组织模式应用程序组织模式 “Medium” Client 中等客户机 / 服务器模式特点

服务器端通过 Servlet 程序向客户机端提供 Image图片 (GIF)

客户机浏览器端网页里含有 Applet 下载控件,需要客户机浏览器含有 Java 解释器

客户端包含 Applet 控件使用户界面更友好,交互性更强

Page 7: Mapinfo China   罗兴祚

Page 7

应用程序组织模式应用程序组织模式 三种模式性能比较 “Thin” Client 传输的图形格式:栅格图 传输速率:快 交互性:弱 “Medium” Client 传输的图形格式:栅格图 传输速率:中 交互性:中等 “Thick” Client 传输的图形格式:矢量图 传输速率:慢 交互性:强

Page 8: Mapinfo China   罗兴祚

Page 8

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分

MapXtremeServlet MapJ Data Providers Renderers

Page 9: Mapinfo China   罗兴祚

Page 9

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分

MapXtremeServlet mapxtremeServlet 是系统的地图服务供给者

,它提供如下服务:

提供栅格地图数据服务 提供矢量地图数据服务 提供图元文件数据服务(例 :tab 表里的属性信

息)

Page 10: Mapinfo China   罗兴祚

Page 10

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分

MapJ Object

MapJ 管理地图集的各种状态(例:地图中心位置、地图视野、地图坐标系等)

MapJ 通过向 MapxtremeServlet 服务实例转发客户请求,获得 Servlet 响应的数据和图片

MapJ 位于 Mapxtreme 客户端应用程序开发包 API 的最顶端

Page 11: Mapinfo China   罗兴祚

Page 11

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分

Renderers

用来生成返回客户端地图数据的组件

1. LocalRenderer

2. MapXtremeImageRenderer3. Intra-Servlet Container Renderer4. Composite Renderer

Page 12: Mapinfo China   罗兴祚

Page 12

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分

Data Providers Data Providers 在 MapJ 对象访问地图数

据时起中间枢纽作用,它能访问以下几种数据源:

MapInfo tab format (.tab) Oracle8i with Spatial Option Informix Universal Server SpatialWare DataBlade DB2 SpatialWare Extender JDBC compatible tables containing longitude and latitude columns GeoTIFF and MIGrid Raster ESRI Shapefiles Data Binding Annotation

可自定义 Data Provider : 将系统未提供接口的数据(如其他矢量、光栅数据)引入

Page 13: Mapinfo China   罗兴祚

Page 13

MapXtreme for Java 主要构成部分MapXtreme for Java 主要构成部分 TableDescHelper (表名): describes the data DataProviderHelper (路径): defines the source of the data DataProviderRef ( LocalDataProviderRef 、 MapXtremeDataProviderRef ) : describes how to

get the data For example : TABDataProvider // specify the url to the MapXtreme servlet which remotely // connects us to the map engine String MapXtremeURL = "http://localhost:8080/mapxtreme/ servlet/mapxtreme"; // create the tab Table Desc TABTableDescHelper TabDesc = new TABTableDescHelper(new File("mytab.tab").getName()); // create the tab Data Provider TABDataProviderHelper DPHelper = new TABDataProviderHelper("d:\\maps"); // Create the Remote Dataprovider needed to access the Data MapXtremeDataProviderRef MXDPRef = new MapXtremeDataProviderRef(DPHelper, MapXtremeURL); // assign it to MapJ map.getLayers().add(MXDPRef, TabDesc, "tabLayer");

Page 14: Mapinfo China   罗兴祚

Page 14

MapXtreme 例程框架结构图

Browser Web Server Application Server

HTML &

Map

HTML &

Map

Servlet/JSP

Servlet/JSP

Response

Oracle8i

Thematics

Thematics

Request

TAB1010100111010010101010101010010101010101

Client MiddleWareDataBas

eInternet

MapXtreme Servlet

Applet

Applet

UserservletUserservlet

Page 15: Mapinfo China   罗兴祚

Page 15

实现基本地图功能的核心代码分析Creating Your First Map

实现基本地图功能的核心代码分析Creating Your First Map

1. Create a MapJ Object.MapJ myMap = new MapJ();

2. Load map data.MapDefContainer mdc = new FileMapDefContainer(dir) :

MapDefContainer mdc = new FileMapDefContainer("c:\\mapxtreme\maps")myMap.loadMapDefinition(mapDefContainer, name)

myMap.loadMapDefinition(mdc, "Asia");

3. Set map device bounds.myMap.setDeviceBounds(new DoubleRect(0, 0, 800, 600));

4. Render the map to an image file.String mapxtremeServletUrl = “http://localhost:8080/mapxtreme40/servlet/mapxtreme”;ImageRequestComposer imageRC =ImageRequestComposer.create(myMap, 256, Color.blue,“image/gif”);MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(mapxtremeServletURL);Renderer.render(imageRC); //myMap.render(renderer);Renderer.toFile("comp.gif");

Page 16: Mapinfo China   罗兴祚

Page 16

实现基本地图功能的核心代码分析Controlling the Map

实现基本地图功能的核心代码分析Controlling the Map

Setting the Zoom Level : setZoom(), setCenter(), and setZoomAndCenter()

myMap.setZoom(500);

Recentering the Map :// Create the screen pointscreenpoint = new DoublePoint(event.getX(),event.getY());// Create the real world pointworldpoint = myMap.transformScreenToNumeric(screenpoint);// Set the center of the mapmyMap.setCenter(worldpoint);

Setting the Map Bounds//This example uses opposing corners to set the bounds to the entire world:DoubleRect bounds = new DoubleRect(-180,-90,180,90);//This example uses opposing corners to set the bounds to a zoomed-in map area:DoubleRect bounds = new DoubleRect(-1.969272, 50.560410, 1.443363, 52.315529);//This example uses the center point, width, and height to set the bounds for the world:DoubleRect bounds = new DoubleRect(new DoublePoint(0,0),360,180);myMap.setBounds(bounds);

Setting the Map Distance UnitsdistUnit = LinearUnit.kilometer;myMap.setDistanceUnits(distUnit);

Page 17: Mapinfo China   罗兴祚

Page 17

Servlet 简述Servlet 简述 javax.servlet package

接口 Servlet ServletConfig ServletRequest ServletResponse

类 GenericServlet ServletInputStream ServletOutputStream

异常 ServletException UnavailableException

Page 18: Mapinfo China   罗兴祚

Page 18

Servlet 简述Servlet 简述 javax.servlet.http package

接口 httpServletRequest httpServletResponse

类 httpServlet :

HTTP1.0 : doGet 、 doPost HTTP1.1 : service ( httpServletRequest req , httpServletResponse res )

httpUtils

Page 19: Mapinfo China   罗兴祚

Page 19

IDE 开发调试工具IDE 开发调试工具 Visual Cafe 4.0 Symantec 公司发行

JDeveloper Orcale 公司发行

JBulider Borland 公司发行

IBM Visual Age

Page 20: Mapinfo China   罗兴祚

Page 20

操作演示操作演示

讲解 JDeveloper 集成开发环境:在 Mapxtreme for Java 自带“ Middle”Cilent 模式例程基础上进行扩展

讲解基于 “ Middle”Cilent 模式 的中间件