Blackberry引路蜂地圖開發示例:路徑查詢
阿新 • • 發佈:2019-02-09
可以通過RasterMap的getDirection()方法來查詢路徑,和查詢地址類似,路徑查詢的結果也是通過回撥函式的方式來通知應用程式的,下面的例子返回南京到北京的路徑。返回結果存放在MapDirection中,MapDirection包含了路徑的詳細資訊,包括路徑的每個步驟,長度,時間,方向等
//--------------------------------- PACKAGE ------------------------------------ package com.pstreets.gisengine.demo.rim; //--------------------------------- IMPORTS ------------------------------------ import com.mapdigit.gis.MapDirection; import com.mapdigit.gis.geometry.GeoLatLng; import com.mapdigit.gis.raster.MapType; import com.mapdigit.gis.service.IRoutingListener; import com.pstreets.gisengine.demo.MapDemoRIM; import net.rim.device.api.ui.component.Menu; import net.rim.device.api.ui.MenuItem; //[------------------------------ MAIN CLASS ----------------------------------] /** * Map routing demo for Guidebee Map API on RIM platform. * <hr><b>© Copyright 2011 Guidebee, Inc. All Rights Reserved.</b> * @version 1.00, 10/02/11 * @author Guidebee Pty Ltd. */ public class MapRoutingRIM extends MapDemoRIM implements IRoutingListener { /** * Entry point for application * @param args Command line arguments (not used) */ public static void main(String[] args) { // Create a new instance of the application and make the currently // running thread the application's event dispatch thread. MapRoutingRIM theApp = new MapRoutingRIM(); theApp.enterEventDispatcher(); } private MenuItem mapGetDirectionMenuItem = new MenuItem("Get Direction", 0, 0){ public void run(){ String name1 = "南京"; String name2 = "北京"; map.getDirections("from: " + name1 + " to: " + name2); } }; public MapRoutingRIM() { init(); pushScreen(canvas); map.setRoutingListener(this); GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778); map.setCenter(center, 13, MapType.MICROSOFTCHINA); } public void done(String arg0, MapDirection result) { if (result != null) { map.setMapDirection(result); map.resize(result.getBound()); map.setZoom(5); } } protected void createMenu(Menu menu, int instance){ menu.add(mapGetDirectionMenuItem); } }
地圖服務可以選擇使用Google 地圖服務,CloudMade地圖服務,在中國還可能選擇MapAbc地圖服務,預設使用Google 地圖服務。
getDirections()具有三個過載函式,例子中是採用的文字描述方式。上述示例採用了from: address1 to: address2 的格式, CloudMade地圖服務和MapAbc地圖服務則必需採用 經度1,緯度1,經度2,緯度2和格式。
為避免混淆,可以使用下述格式。
public void getDirection(GeoLatLng[] waypoints, IRoutingListener listener);
其中 waypoints 為途徑點座標陣列經緯值,可以支援多點路徑查詢。
此外對於MapAbc 地圖服務,還可以指定城市編碼,如南京編碼為25。
public void getDirection(int citycode,String query, IRoutingListener listener);