Android引路蜂地圖開發樣本:路徑查詢

來源:互聯網
上載者:User

可以通過RasterMap的getDirection()方法來查詢路徑,和查詢地址類似,路徑查詢的結果也是通過回呼函數的方式來通知應用程式的,下面的例子返回南京到北京的路徑。返回結果存放在MapDirection中,MapDirection包含了路徑的詳細資料,包括路徑的每個步驟,長度,時間,方向等。

[java] 
package com.pstreets.gisengine.demo; 
  
import com.mapdigit.gis.MapDirection; 
import com.mapdigit.gis.MapPoint; 
import com.mapdigit.gis.geometry.GeoLatLng; 
import com.mapdigit.gis.service.IRoutingListener; 
import com.pstreets.gisengine.R; 
import com.pstreets.gisengine.SharedMapInstance; 
  
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
  
public class MapRouting extends Activity implements IRoutingListener { 
  
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
 } 
  
 @Override 
 public void onStart() { 
  super.onStart(); 
  GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778); 
  SharedMapInstance.map.setCenter(center, 15, 
    com.mapdigit.gis.raster.MapType.MICROSOFTCHINA); 
  SharedMapInstance.map.setRoutingListener(this); 
  
 } 
  
 @Override 
 public boolean onCreateOptionsMenu(Menu menu) { 
  MenuInflater inflater = getMenuInflater(); 
  inflater.inflate(R.menu.maprouting_menu, menu); 
  return true; 
 } 
  
 @Override 
 public boolean onOptionsItemSelected(MenuItem item) { 
  // Handle item selection  
  switch (item.getItemId()) { 
  case R.id.getdirection: 
   String name1 = "南京"; 
   String name2 = "北京"; 
   SharedMapInstance.map.getDirections("from: " + name1 + " to: " 
     + name2); 
  
   return true; 
  
  default: 
   return super.onOptionsItemSelected(item); 
  } 
  
 } 
  
 @Override 
 public void done(String query, MapDirection result) { 
  if (result != null) { 
   SharedMapInstance.map.setMapDirection(result); 
   SharedMapInstance.map.resize(result.getBound()); 
   SharedMapInstance.map.zoomOut(); 
   SharedMapInstance.map.zoomOut(); 
  
  } 
  
 } 
  
 @Override 
 public void readProgress(int bytes, int total) { 
  
 } 
  

package com.pstreets.gisengine.demo;
 
import com.mapdigit.gis.MapDirection;
import com.mapdigit.gis.MapPoint;
import com.mapdigit.gis.geometry.GeoLatLng;
import com.mapdigit.gis.service.IRoutingListener;
import com.pstreets.gisengine.R;
import com.pstreets.gisengine.SharedMapInstance;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
 
public class MapRouting extends Activity implements IRoutingListener {
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
 }
 
 @Override
 public void onStart() {
  super.onStart();
  GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
  SharedMapInstance.map.setCenter(center, 15,
    com.mapdigit.gis.raster.MapType.MICROSOFTCHINA);
  SharedMapInstance.map.setRoutingListener(this);
 
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.maprouting_menu, menu);
  return true;
 }
 
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle item selection
  switch (item.getItemId()) {
  case R.id.getdirection:
   String name1 = "南京";
   String name2 = "北京";
   SharedMapInstance.map.getDirections("from: " + name1 + " to: "
     + name2);
 
   return true;
 
  default:
   return super.onOptionsItemSelected(item);
  }
 
 }
 
 @Override
 public void done(String query, MapDirection result) {
  if (result != null) {
   SharedMapInstance.map.setMapDirection(result);
   SharedMapInstance.map.resize(result.getBound());
   SharedMapInstance.map.zoomOut();
   SharedMapInstance.map.zoomOut();
 
  }
 
 }
 
 @Override
 public void readProgress(int bytes, int total) {
 
 }
 
}


地圖服務可以選擇使用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);

 作者:mapdigit
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.