×
Namespaces

Variants
Actions

Ovi地图JavaME Location API开发介绍

From Nokia Developer Wiki
Jump to: navigation, search

Needs-update.png本文需要更新: 如果您发现这篇文章有用,请修复下面的问题,然后从文章中删除 {{ArticleNeedsUpdate}} 模板,以消除此警告。

原因: hamishwillee (18 Jun 2013)
Very out of date - the location API is now part of the SDK and has been through a number of revisions.

WP Metro Icon Chinese.png
Article Metadata

文章
max.chen 在 26 Jun 2011 创建
最后由 hamishwillee 在 18 Jun 2013 编辑


Ovi Location API是诺基亚推出的一组针对Ovi地图服务进行开发的API。所以的API都支持相同的核心功能,包括交互式的地图,显示位置信息,计算和显示路线等。目前这些API支持Qt,JavaScript和JavaME的开发。

Contents

JavaME Location API

JavaME Location API包括地图显示,查找,计算线路等功能,这些API可以是开发者在手机上开发基于Ovi地图的应用。进行Ovi地图的开发首先要下载JavaME Location API的Jar包和文档:https://www.developer.nokia.com/Develop/asha/java/downloads.xhtml

这个包里面包括:

  • LBSP.jar——API 的Jar包. 应当将这个包引入到地图的工程。
  • doc\目录—— HTML格式的Javadoc。
  • example\目录—— 包含示例和源代码。

显示地图

通过创建一个MapCanvas类的实例来显示一个交互式的地图是十分简单的事情:

import javax.microedition.lcdui.Display; 
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import com.nokia.maps.map.MapCanvas;
import com.nokia.maps.common.ApplicationContext;
 
/**
* Minimal MIDP application to show map content to the user.
*/

public class MapMIDlet extends MIDlet {
/**
* This method is called at application start-up to set
* MapCanvas as a current Displayable.
* @see MIDlet
*/

protected void startApp() throws MIDletStateChangeException {
// Insert your own app_id and token that you obtained when you
// registered at https://api.forum.nokia.com/ovi-api/ui/registration
ApplicationContext.getInstance().setAppID(...);
ApplicationContext.getInstance().setToken(...);
Display display = Display.getDisplay(this);
MapCanvas mapCanvas = new MapCanvas( display );
display.setCurrent(mapCanvas);
}
 
/**
* @see MIDlet
*/

protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
}
 
/**
* see MIDlet
*/

protected void pauseApp() {
}
}

通过查看Javadoc,我们可以发现MapCanvas类中包含了MapDisplay和MapFactory的实例:

protected  MapDisplay map     ;          //MapDisplay that is rendered.
protected MapFactory mapFactory ; //MapFactory used to create MapDisplay.

它们之间的关系如下:

Ovimapapi map.png

注意:开发者可以不使用MapCanvas而通过MapDisplay和MapFactory创建更加灵活的应用。

添加地图元素

通过MapDisplay的addMapObject(MapObject object)方法可以向地图中添加例如标记,多边形,圆,长方形的多种图形。以添加标记为例:

  1. 创建一个com.nokia.maps.common.GeoCoordinate的实例用来指示标记的坐标。
  2. 创建 com.nokia.maps.map.StandardMarker的实例。
  3. 在地图上加入标记。
GeoCoordinate coord = new GeoCoordinate( 10, 10, 0 );  
MapStandardMarker marker = mapFactory.createStandardMarker(coord, 10, null );
map.addMapObject( marker );

搜索

通过SearchManager的静态方法SearchManager.getInstance()可以得到一个SearchManager的实例。SearchManager可以搜索指定的地名,也可以搜索给的的位置。搜索完成后通过getLocations()或getPlaces()获取搜索结果。


SearchManager searchManager = SearchManager.getInstance(); 
searchManager.geocode("Germany,Berlin", null );
Location[] locations = searchManager.getLocations();

线路

RouteManager提供了线路的服务。进行线路计算,需要以下条件:

  • 至少两个点 —— 线路的起止位置,com.nokia.maps.routing.Waypoint的实例
  • 线路计算模式 —— 如何进行线路的计算,com.nokia.maps.routing.RoutingMode的实例

下面的代码演示了如何简单的进行线路的计算:

WaypointParameterList waypoints = new WaypointParameterList(); 
RouteManager rm = RouteManager.getInstance();
RoutingMode[] modes = { new RoutingMode() };
rm.calculateRoute(waypoints, modes );


相关链接

This page was last modified on 18 June 2013, at 08:00.
127 page views in the last 30 days.