Android引路蜂地图开发示例:本地查询

jerry 地图开发 2015年11月26日 收藏

本地查询可以查询指定区域内诸如宾馆,邮局等用户感兴趣的地方。其使用方法和地址查询非常类似。
下面示例查询32.0616667, 118.7777778为中心点一定区域内宾馆的信息。

  1. package com.pstreets.gisengine.demo;
  2.  
  3. import com.mapdigit.gis.MapPoint;
  4. import com.mapdigit.gis.geometry.GeoLatLng;
  5. import com.mapdigit.gis.service.DigitalMapService;
  6. import com.mapdigit.gis.service.IGeocodingListener;
  7. import com.pstreets.gisengine.R;
  8. import com.pstreets.gisengine.SharedMapInstance;
  9.  
  10. import android.app.Activity;
  11. import android.os.Bundle;
  12. import android.view.Menu;
  13. import android.view.MenuInflater;
  14. import android.view.MenuItem;
  15.  
  16. public class MapLocalSearch extends Activity implements IGeocodingListener {
  17.  
  18.  @Override
  19.  public void onCreate(Bundle savedInstanceState) {
  20.   super.onCreate(savedInstanceState);
  21.   setContentView(R.layout.main);
  22.  }
  23.  
  24.  @Override
  25.  public void onStart() {
  26.   super.onStart();
  27.   GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
  28.   SharedMapInstance.map.setCenter(center, 15,
  29.     com.mapdigit.gis.raster.MapType.MICROSOFTCHINA);
  30.   DigitalMapService.getSearchOptions().LanguageID = "zh-cn";
  31.   SharedMapInstance.map.setGeocodingListener(this);
  32.  
  33.  }
  34.  
  35.  @Override
  36.  public boolean onCreateOptionsMenu(Menu menu) {
  37.   MenuInflater inflater = getMenuInflater();
  38.   inflater.inflate(R.menu.maplocalsearch_menu, menu);
  39.   return true;
  40.  }
  41.  
  42.  @Override
  43.  public boolean onOptionsItemSelected(MenuItem item) {
  44.   // Handle item selection
  45.   switch (item.getItemId()) {
  46.   case R.id.findaddress:
  47.    String name = "宾馆";
  48.    GeoLatLng screenCenter = SharedMapInstance.map.getScreenCenter();
  49.    SharedMapInstance.map.getLocations(name, 0, screenCenter,
  50.      SharedMapInstance.map.getScreenBounds(screenCenter));
  51.  
  52.    return true;
  53.  
  54.   default:
  55.    return super.onOptionsItemSelected(item);
  56.   }
  57.  
  58.  }
  59.  
  60.  @Override
  61.  public void done(String query, MapPoint[] result) {
  62.   if (result != null) {
  63.    SharedMapInstance.map.panTo(result[0].getPoint());
  64.    for (int i = 0; i < result.length; i++) {
  65.     System.out.println(result[i].objectNote);
  66.    }
  67.  
  68.   }
  69.  
  70.  }
  71.  
  72.  @Override
  73.  public void readProgress(int bytes, int total) {
  74.  
  75.  }
  76.  
  77. }

本地查询方法
public void getLocations(String address,int start,GeoLatLng center,GeoBounds bound, IGeocodingListener listener);
指定中心点和查询区域。本地查询可以多次返回结果,start为查询结果起始顺序,每次返回结果在SearchOptions 中定义,缺省每次返回4个。
上述结果返回内容为,具体结果可能不同。
“晶丽酒店025-83310818 025-83310818212223 025-86636636 ”
“城市名人酒店025-83123333 025-83123888 ”
“南京玄武饭店 025-83358888 ”
“Sofitel Galaxy Nanjing – 南京索菲特银河大酒店025-83718888 “