BaiduMap---百度地图官方Demo之LBS.云检索功能(介绍如何使用LBS.云检索用户自有数据)
2015-07-02 13:43
721 查看
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/regionSearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="本地搜索" /> <Button android:id="@+id/nearbySearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="周边搜索" /> <Button android:id="@+id/boundsSearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="矩形搜索" /> <Button android:id="@+id/detailsSearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="详情搜索" /> </LinearLayout> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>
package baidumapsdk.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; import com.baidu.mapapi.cloud.BoundSearchInfo; import com.baidu.mapapi.cloud.CloudListener; import com.baidu.mapapi.cloud.CloudManager; import com.baidu.mapapi.cloud.CloudPoiInfo; import com.baidu.mapapi.cloud.CloudSearchResult; import com.baidu.mapapi.cloud.DetailSearchInfo; import com.baidu.mapapi.cloud.DetailSearchResult; import com.baidu.mapapi.cloud.LocalSearchInfo; import com.baidu.mapapi.cloud.NearbySearchInfo; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.model.LatLngBounds; import com.baidu.mapapi.model.LatLngBounds.Builder; /** * 介绍如何使用LBS云检索用于自有数据 * * */ public class CloudSearchActivity extends Activity implements CloudListener { private static final String LTAG = CloudSearchActivity.class.getSimpleName(); private MapView mMapView; private BaiduMap mBaiduMap; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.activity_lbssearch); /** * CloudManager:LBS云检索管理类 * getInstance():获取唯一可用实例 * init(CloudListener listener):初始化 * 需要实现CloudListener接口的onGetDetailSearchResult和onGetSearchResult方法 * */ CloudManager.getInstance().init(CloudSearchActivity.this); mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); //本地搜索 findViewById(R.id.regionSearch).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { /** * LocalSearchInfo:设置云检索中本地检索的参数,继承自 BaseCloudSearchInfo * */ LocalSearchInfo info = new LocalSearchInfo(); //access_key(必须),最大长度50 info.ak = "B266f735e43ab207ec152deff44fec8b"; //geo table 表主键(必须) info.geoTableId = 31869; //标签,可选,空格分隔的多字符串,最长45个字符,样例:美食 小吃 info.tags = ""; //检索关键字,可选。最长45个字符。 info.q = "天安门"; //检索区域名称,必选。市或区的名字,如北京市,海淀区。最长25个字符。 info.region = "北京市"; /** * localSearch(LocalSearchInfo info) * 区域检索,如果所有参数都合法,返回true,否则返回 fasle, * 检索的结果在 CloudListener 中的 onGetSearchResult() 函数中。 * */ CloudManager.getInstance().localSearch(info); } }); //周边搜索 findViewById(R.id.nearbySearch).setOnClickListener( new OnClickListener() { public void onClick(View v) { /** * NearbySearchInfo:周边检索设置参数类,继承自 BaseCloudSearchInfo * */ NearbySearchInfo info = new NearbySearchInfo(); //access_key(必须),最大长度50 info.ak = "D9ace96891048231e8777291cda45ca0"; ////geo table 表主键(必须) info.geoTableId = 32038; //检索半径,可选;单位为米,默认为1000米。样例:500 info.radius = 30000; //检索中心点坐标(经纬度),必选;样例:116.4321,38.76623 info.location = "116.403689,39.914957"; /** * nearbySearch(NearbySearchInfo info) * 周边检索,如果所有参数都合法,返回true,否则返回 fasle, * 检索的结果在 CloudListener 中的 onGetSearchResult() 函数中。 * */ CloudManager.getInstance().nearbySearch(info); } }); //矩形搜索 findViewById(R.id.boundsSearch).setOnClickListener( new OnClickListener() { public void onClick(View v) { /** *BoundSearchInfo:设置矩形检索条件类,继承自 BaseCloudSearchInfo * */ BoundSearchInfo info = new BoundSearchInfo(); info.ak = "B266f735e43ab207ec152deff44fec8b"; info.geoTableId = 31869; info.q = "天安门"; //矩形区域,必须。左下角和右上角的经纬度坐标点。2个坐标点用;号分隔 //样例:116.30,36.20;117.30,37.20 info.bound = "116.401663,39.913961;116.406529,39.917396"; /** * boundSearch(BoundSearchInfo info) * 矩形检索,如果所有参数都合法,返回true,否则返回 fasle, * 检索的结果在 CloudListener 中的 onGetSearchResult() 函数中。 * */ CloudManager.getInstance().boundSearch(info); } }); //详情搜索 findViewById(R.id.detailsSearch).setOnClickListener( new OnClickListener() { public void onClick(View v) { /** *DetailSearchInfo:详细信息检索条件类,继承自 BaseSearchInfo * */ DetailSearchInfo info = new DetailSearchInfo(); info.ak = "B266f735e43ab207ec152deff44fec8b"; info.geoTableId = 31869; //poi数据id info.uid = 18622266; /** * detailSearch(DetailSearchInfo info) * 详细信息检索,如果所有参数都合法,返回true,否则返回 fasle。 * */ CloudManager.getInstance().detailSearch(info); } }); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); CloudManager.getInstance().destroy(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } /** * void onGetSearchResult(CloudSearchResult result,int error) * 当详情检索完成时回调此函数 * @param * result -搜索的结果,如果发生网络错误为null * error - 错误号,0表示正确返回,-1表示网络错误 * */ /** * DetailSearchResult:详细信息检索结果类 * 字段: poiInfo 详细信息结果数据 * */ public void onGetDetailSearchResult(DetailSearchResult result, int error) { if (result != null) { if (result.poiInfo != null) { Toast.makeText(CloudSearchActivity.this, result.poiInfo.title,Toast.LENGTH_SHORT).show(); } else { Toast.makeText(CloudSearchActivity.this,"status:" + result.status, Toast.LENGTH_SHORT).show(); } } } /** * void onGetDetailSearchResult(DetailSearchResult result,int error) * 当检索完成时回调此函数 * @param * result - 详情搜索结果,如果发生网络错误为null * error - 错误号,0表示正确返回,-1表示网络错误 * */ /** * CloudSearchResult: * java.util.List<CloudPoiInfo> * poiList * poi结果列表 * */ public void onGetSearchResult(CloudSearchResult result, int error) { if (result != null && result.poiList != null && result.poiList.size() > 0) { Log.d(LTAG, "onGetSearchResult, result length: " + result.poiList.size()); //清空地图所有的 Overlay 覆盖物以及 InfoWindow mBaiduMap.clear(); /** * public static BitmapDescriptor fromResource(int resourceId) * 根据资源 Id 创建 bitmap 描述信息 * */ BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding); LatLng ll; LatLngBounds.Builder builder = new Builder(); for (CloudPoiInfo info : result.poiList) { ll = new LatLng(info.latitude, info.longitude); /** * OverlayOptions:地图覆盖物选型基类 * * public MarkerOptions icon(BitmapDescriptor icon): * 设置 Marker 覆盖物的图标,相同图案的 icon 的 marker * 最好使用同一个 BitmapDescriptor 对象以节省内存空间。 * @param icon - Marker 覆盖物的图标 * @return 该 Marker 选项对象 * * public MarkerOptions position(LatLng position): * 设置 marker 覆盖物的位置坐标 * @param position - marker 覆盖物的位置坐标 * @param 该 Marker 选项对象 * */ OverlayOptions oo = new MarkerOptions() .icon(bd) .position(ll); /** * addOverlay(OverlayOptions options): * 向地图添加一个 Overlay * */ mBaiduMap.addOverlay(oo); /** * public LatLngBounds.Builder include(LatLng point) * 让该地理范围包含一个地理位置坐标 * @param point - 地理位置坐标 * @return 该构造器对象 * */ builder.include(ll); } /** * public LatLngBounds build() * 创建地理范围对象 * @return 创建出的地理范围对象 * */ LatLngBounds bounds = builder.build(); /** * MapStatusUpdateFactory:生成地图状态将要发生的变化 * * public static MapStatusUpdate newLatLngBounds(LatLngBounds bounds) * 设置显示在屏幕中的地图地理范围 * @param bounds - 地图显示地理范围,不能为 null * @return 返回构造的 MapStatusUpdate, 如果 bounds 为 null 则返回空。 * */ MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds); mBaiduMap.animateMapStatus(u); } } }
相关文章推荐
- BaiduMap---百度地图官方Demo之短串分享功能(介绍关键词查询,suggestion查询和查看餐饮类Place详情页功能)
- 解决Failed to allocate memory: 8转
- BaiduMap---百度地图官方Demo之热力图功能(介绍如何以热力图形式显示用户自有数据)
- BaiduMap---百度地图官方Demo之公交线路查询功能(介绍查询公交线路功能)
- baidu map,百度地图,轨迹播放
- BaiduMap---百度地图官方Demo之路径规划功能(介绍公交,驾车和步行三种线路规划方法和自设路线方法)
- BaiduMap---百度地图官方Demo之地理编码功能(介绍地址信息和坐标之间的相互转换)
- BaiduMap---百度地图官方Demo之POI搜索功能(介绍关键词查询,suggestion查询和查看餐饮类Place详情页功能)
- Xamairn中MessagingCenter
- 向Genymotion中添加文件时出现 Failed to push the item(s).错误
- BaiduMap---百度地图官方Demo之离线地图功能(介绍如何下载和使用离线地图)
- BaiduMap---百度地图官方Demo之覆盖物功能(介绍添加覆盖物并响应点击功能和弹出pop功能)
- BaiduMap---百度地图官方Demo之自定义绘制功能(介绍自定义绘制点,线,多边形,园等几何图形和文字)
- BaiduMap---百度地图官方Demo之定位图层展示(介绍定位图层的基本用法)
- LeetCode:Factorial Trailing Zeroes
- Air始终保持应用全屏的方法
- BaiduMap---百度地图官方Demo之地图操作功能(介绍地图基本控制方法)
- Waiting For Debugger
- 安装apk提示Install_failed_invalid_UR解决办法
- 概率机器学习和人工智能(Probabilistic machine learning and artificial intelligence_Nature2015)