Ovi地图JavaME Location API开发介绍
文章信息
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://projects.developer.nokia.com/LBSPJME/
这个包里面包括:
- 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.
它们之间的关系如下:
注意:开发者可以不使用MapCanvas而通过MapDisplay和MapFactory创建更加灵活的应用。
添加地图元素
通过MapDisplay的addMapObject(MapObject object)方法可以向地图中添加例如标记,多边形,圆,长方形的多种图形。以添加标记为例:
- 创建一个com.nokia.maps.common.GeoCoordinate的实例用来指示标记的坐标。
- 创建 com.nokia.maps.map.StandardMarker的实例。
- 在地图上加入标记。
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 );



(no comments yet)