保定企业建网站,高端的网站名称,哪个app可以免费下载ppt模板,网页微信电脑版先看执行后的图吧#xff1a;POI(Point of Interest)。中文能够翻译为“兴趣点”。在地理信息系统中。一个POI能够是一栋房子、一个商铺、一个邮筒、一个公交站等 具体#xff1a;http://developer.baidu.com/map/sdkandev-4.htm主要应用 MKSearch 类#xff1a;com.baidu.…先看执行后的图吧POI(Point of Interest)。中文能够翻译为“兴趣点”。在地理信息系统中。一个POI能够是一栋房子、一个商铺、一个邮筒、一个公交站等 具体http://developer.baidu.com/map/sdkandev-4.htm主要应用 MKSearch 类com.baidu.mapapi.search类 MKSearchjava.lang.Objectcom.baidu.mapapi.search.MKSearchpublic class MKSearchextends java.lang.Object搜索服务.用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索字段概要字段限定符和类型字段和说明static intstatic intstatic intstatic int公交检索策略常量最少步行距离static intstatic intstatic intstatic intstatic intstatic intstatic intstatic intstatic int方法概要方法限定符和类型方法和说明int公交路线具体信息搜索 异步函数。返回结果在MKSearchListener里的onGetBusDetailResult方法通知void销毁MKSearch 模块 当不再使用Search 功能时。须要调用此函数intMKPlanNode start,java.lang.String endCity, MKPlanNode end)驾乘路线搜索.intMKPlanNode start,java.lang.String endCity, MKPlanNode end,java.util.List wpNodes)驾车路线搜索,可设置途经点 异步函数。返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知int依据地址名获取地址信息 异步函数返回结果在MKSearchListener里的onGetAddrResult方法通知int获取指定页的的poi结果.boolean初使化使用完毕后。请调用 destroy 函数释放资源intpoi具体信息检索boolean获取POI信息共享短url.booleanGeoPoint location,java.lang.String name, java.lang.String address)获取地址信息共享短URL.int依据范围和检索词发起范围检索.int城市poi检索.intGeoPoint pt,int radius)依据中心点、半径与检索词发起周边检索.int依据地理坐标点获取地址信息 异步函数返回结果在MKSearchListener里的onGetAddrResult方法通知int设置驾车路线规划策略.voidint设置路线规划策略.int联想词检索依据模糊的不完备的检索词返回精确的建议搜索词 异步函数返回结果在MKSearchListener里的onGetSuggestionResult方法通知intMKPlanNode start, MKPlanNode end)公交路线搜索.intMKPlanNode start,java.lang.String endCity, MKPlanNode end)步行路线搜索.通过上面的阅读应该有所了解了吧直接代码了。。MainActivity.javapackage com.majianjie.baidumap;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.graphics.Bitmap;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.MeasureSpec;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.Spinner;import android.widget.TextView;import android.widget.Toast;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.map.LocationData;import com.baidu.mapapi.map.MKEvent;import com.baidu.mapapi.map.MKMapViewListener;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapPoi;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationOverlay;import com.baidu.mapapi.map.PoiOverlay;import com.baidu.mapapi.map.PopupClickListener;import com.baidu.mapapi.map.PopupOverlay;import com.baidu.mapapi.search.MKAddrInfo;import com.baidu.mapapi.search.MKBusLineResult;import com.baidu.mapapi.search.MKDrivingRouteResult;import com.baidu.mapapi.search.MKPoiInfo;import com.baidu.mapapi.search.MKPoiResult;import com.baidu.mapapi.search.MKSearch;import com.baidu.mapapi.search.MKSearchListener;import com.baidu.mapapi.search.MKShareUrlResult;import com.baidu.mapapi.search.MKSuggestionResult;import com.baidu.mapapi.search.MKTransitRouteResult;import com.baidu.mapapi.search.MKWalkingRouteResult;import com.baidu.platform.comapi.basestruct.GeoPoint;import com.example.baidumap.R;public class MainActivity extends Activity {//声明控件private Button request;private static StringBuilder sb new StringBuilder();private int i1;private Toast mToastnull;private BMapManager mBMapManagernull;private MapView mMapView null;//MapView 是地图主控件private MapController mMapController null;//用MapController完毕地图控制private LocationClient mLocClient;public LocationData mLocData null;private LocationOverlay myLocationOverlay null;//定位图层private boolean isRequest false;//是否手动触发请求定位private boolean isFirstLoc true;//是否首次定位private PopupOverlay mPopupOverlay null;//弹出泡泡图层。浏览节点时使用private View viewCachenull;public BDLocation location new BDLocation(); //POIprivate MKSearch mMKSearch null;private Spinner detail;private List poi;private ArrayAdapter String adapter;private String poiName;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//**使用地图sdk前需先初始化BMapManager。这个必须在setContentView()先初始化mBMapManager new BMapManager(this);//第一个參数是API key, 第二个參数是经常使用事件监听用来处理通常的网络错误授权验证错误等你也能够不加入这个回调接口mBMapManager.init(LDtH1sVwr7kygaF0aTqaVwWU, new MKGeneralListener() {//授权错误的时候调用的回调函数Overridepublic void onGetPermissionState(int iError) {if (iError MKEvent.ERROR_PERMISSION_DENIED) {showToast(API KEY错误, 请检查);}}//一些网络状态的错误处理回调函数Overridepublic void onGetNetworkState(int iError) {if (iError MKEvent.ERROR_NETWORK_CONNECT) {Toast.makeText(getApplication(), 您的网络出错啦, Toast.LENGTH_LONG).show();}}});//初始化init();//单击事件click();}//* 显示Toast消息private void showToast(String msg){if(mToast null){mToast Toast.makeText(this, msg, Toast.LENGTH_SHORT);}else{mToast.setText(msg);mToast.setDuration(Toast.LENGTH_SHORT);}mToast.show();}private void click() {request.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View arg0) {requestLocation();}});}Overrideprotected void onResume() {//MapView的生命周期与Activity同步。当activity挂起时需调用MapView.onPause()mMapView.onResume();mBMapManager.start();//又一次启动mMKSearch.init(mBMapManager, new MySearchListener());super.onResume();}Overrideprotected void onPause() {//MapView的生命周期与Activity同步当activity挂起时需调用MapView.onPause()mMapView.onPause();super.onPause();}private void init() {//使用自定义的title注意顺序setContentView(R.layout.activity_main); //activity的布局 //这里是加入自定义的titlebtn.xml//通过id找到他们mMapView (com.baidu.mapapi.map.MapView) findViewById(R.id.bmapView);mMapControllermMapView.getController(); //获取地图控制器mMapController.enableClick(true); //设置地图是否响应点击事件request(Button)findViewById(R.id.request);viewCache LayoutInflater.from(this).inflate(R.layout.pop_layout, null);mPopupOverlay new PopupOverlay(mMapView, new PopupClickListener() {// * 点击弹出窗体图层回调的方法Overridepublic void onClickedPopup(int arg0) {//隐藏弹出窗体图层mPopupOverlay.hidePop();}});mMapController.enableClick(true); //* 设置地图是否响应点击事件 .mMapController.setZoom(12);// * 设置地图缩放级别mMapView.setBuiltInZoomControls(true); // * 显示内置缩放控件mMapView.setTraffic(true); //poimMKSearch new MKSearch();detail(Spinner)findViewById(R.id.detail);poi new ArrayList();poi.add(请选择);poi.add(ATM);poi.add(旅馆);poi.add(餐厅);poi.add(公园);poi.add(药店);poi.add(图书馆);poi.add(景点);poi.add(医院);poi.add(KFC);poi.add(学校);poi.add(超市);adapternew ArrayAdapter(this, android.R.layout.simple_spinner_item,poi);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);detail.setAdapter(adapter);detail.setOnItemSelectedListener(new OnItemSelectedListener() {Overridepublic void onItemSelected(AdapterView parent, View v,int position, long id) {poiName(parent.getSelectedItem().toString());if(poiName.equals(请选择)){}else{mMKSearch.init(mBMapManager, new MySearchListener());//注意MKSearchListener仅仅支持一个。以最后一次设置为准mMKSearch.poiSearchNearBy(poiName, new GeoPoint((int) (39.907004 * 1E6), (int) (119.54048 * 1E6)), 5000);}}Overridepublic void onNothingSelected(AdapterView arg0) {}});mLocData new LocationData();mLocClient new LocationClient(getApplicationContext()); // 定位SDK的核心类//实例化定位服务。LocationClient类必须在主线程中声明mLocClient.registerLocationListener(new BDLocationListenerImpl());//注冊定位监听接口/*** 设置定位參数*/LocationClientOption option new LocationClientOption();option.setOpenGps(true); //打开GPRSoption.setAddrType(all);//返回的定位结果包括地址信息option.setCoorType(bd09ll);//返回的定位结果是百度经纬度,默认值gcj02option.setScanSpan(5000); //设置发起定位请求的间隔时间为5000msoption.disableCache(false);//禁止启用缓存定位//option.setPoiNumber(5); //最多返回POI个数//option.setPoiDistance(1000); //poi查询距离//option.setPoiExtraInfo(true); //是否须要POI的电话和地址等具体信息mLocClient.setLocOption(option);mLocClient.start(); //调用此方法開始定位myLocationOverlay new LocationOverlay(mMapView);//定位图层初始化//将定位数据设置到定位图层里myLocationOverlay.setMarker(getResources().getDrawable(R.drawable.set));//加入定位图层mMapView.getOverlays().add(myLocationOverlay);myLocationOverlay.enableCompass();//更新图层数据运行刷新后生效mMapView.refresh();/*//准备要加入的Overlaydouble mLat1 39.910159;double mLon1 119.544697;// 用给定的经纬度构造GeoPoint单位是微度 (度 * 1E6)GeoPoint p1 new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));//准备overlay图像数据依据实情情况修复Drawable mark getResources().getDrawable(R.drawable.set);//用OverlayItem准备Overlay数据OverlayItem item1 new OverlayItem(p1,item1,item1);//使用setMarker()方法设置overlay图片,假设不设置则使用构建ItemizedOverlay时的默认设置//创建IteminizedOverlayCustomItemizedOverlay itemOverlay new CustomItemizedOverlay(mark, mMapView);//将IteminizedOverlay加入到MapView中mMapView.getOverlays().clear();mMapView.getOverlays().add(itemOverlay);//如今全部准备工作已准备好使用下面方法管理overlay.//加入overlay, 当批量加入Overlay时使用addItem(List)效率更高itemOverlay.addItem(item1);//删除overlay .//itemOverlay.removeItem(itemOverlay.getItem(0));//mMapView.refresh();//清除overlay// itemOverlay.removeAll();// mMapView.refresh();mMapView.refresh();*/// mMapController.setCenter(p1);mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {// * 地图移动完毕时会回调此接口 方法Overridepublic void onMapMoveFinish() {//showToast(地图移动完毕。);}//* 地图加载完毕回调此接口方法Overridepublic void onMapLoadFinish() {showToast(地图加载完毕);}//* 地图完毕带动画的操作(如: animationTo())后。此回调被触发Overridepublic void onMapAnimationFinish() {}//当调用过 mMapView.getCurrentMap()后此回调会被触发 可在此保存截图至存储设备Overridepublic void onGetCurrentMap(Bitmap arg0) {}//* 点击地图上被标记的点回调此方法Overridepublic void onClickMapPoi(MapPoi arg0) {if (arg0 ! null){showToast(arg0.strText);}}});}class MySearchListener implements MKSearchListener{Overridepublic void onGetAddrResult(MKAddrInfo arg0, int arg1) {}Overridepublic void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {}Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {}Overridepublic void onGetPoiDetailSearchResult(int arg0, int arg1) {}Overridepublic void onGetPoiResult(MKPoiResult result, int type, int iError) {if (result null) {return;}// 清除地图上已有的全部覆盖物mMapView.getOverlays().clear();// PoiOverlay是baidu map api提供的用于显示POI的OverlayPoiOverlay poioverlay new PoiOverlay(MainActivity.this, mMapView);// 设置搜索到的POI数据poioverlay.setData(result.getAllPoi());// 在地图上显示PoiOverlay(将搜索到的兴趣点标注在地图上)mMapView.getOverlays().add(poioverlay);if(result.getNumPois() 0) {// 设置当中一个搜索结果所在地理坐标为地图的中心MKPoiInfo poiInfo result.getPoi(0);mMapController.setCenter(poiInfo.pt);}// sb.append(共搜索到).append(result.getNumPois()).append(个POI\n);sb.append(POI信息).append(\n);// 遍历当前页返回的POI(默认仅仅返回10个)for (MKPoiInfo poiInfo : result.getAllPoi()) {sb.append(i 名称).append(poiInfo.name).append(\n);sb.append(地址).append(poiInfo.address).append(\n);i;}// 通过AlertDialog显示当前页搜索到的POInew AlertDialog.Builder(MainActivity.this).setTitle(搜索到的POI信息).setMessage(sb.toString()).setPositiveButton(关闭, new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {dialog.dismiss();sb.delete(0,sb.length());i1;}}).create().show();}Overridepublic void onGetShareUrlResult(MKShareUrlResult arg0, int arg1,int arg2) {}Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {}Override/** * 公交换乘路线搜索结果 * * param result 搜索结果 * param iError 错误号(0表示正确返回) */public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}Override /** * 步行路线搜索结果 * * param result 搜索结果 * param iError 错误号(0表示正确返回) */public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {}}Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);CreateMenu(menu);return true;}private void CreateMenu(Menu menu){MenuItem mnu1 menu.add(0,0,0,显示卫星地图);{mnu1.setAlphabeticShortcut(a);//设置快捷键//mnu1.serIcon(R.drawable.icon);//设置图片}MenuItem mnu2 menu.add(0,1,1,显示街道地图);{mnu2.setAlphabeticShortcut(b);//设置快捷键//mnu1.serIcon(R.drawable.icon);//设置图片}MenuItem mnu3 menu.add(0,2,2,3D地图);{mnu3.setAlphabeticShortcut(c);//设置快捷键//mnu1.serIcon(R.drawable.icon);//设置图片}}Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId() 0){mMapView.setSatellite(true);//设置显示为卫星地图mMapView.setTraffic(false);}else if(item.getItemId() 1){mMapView.setTraffic(true);//显示街道地图mMapView.setSatellite(false);}else if(item.getItemId() 2){//mMapView.se}return true;}public class BDLocationListenerImpl implements BDLocationListener {// * 接收异步返回的定位结果。參数是BDLocation类型參数Overridepublic void onReceiveLocation(BDLocation location) {if (location null) {return;}MainActivity.this.location location;mLocData.latitude location.getLatitude();mLocData.longitude location.getLongitude();//假设不显示定位精度圈将accuracy赋值为0就可以mLocData.accuracy location.getRadius();mLocData.direction location.getDerect();//将定位数据设置到定位图层里myLocationOverlay.setData(mLocData);//更新图层数据运行刷新后生效mMapView.refresh();if(isFirstLoc || isRequest){//将给定的位置点以动画形式移动至地图中心mMapController.animateTo(new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)));showPopupOverlay(location); //加载时候就弹出isRequest false;}isFirstLoc false;}// 接收异步返回的POI查询结果。參数是BDLocation类型參数Overridepublic void onReceivePoi(BDLocation poiLocation) {}}private void requestLocation() {isRequest true;if(mLocClient ! null mLocClient.isStarted()){showToast(正在定位......);mLocClient.requestLocation();}}//继承MyLocationOverlay重写dispatchTap方法private class LocationOverlay extends MyLocationOverlay{public LocationOverlay(MapView arg0) {super(arg0);}// * 在“我的位置”坐标上处理点击事件。Overrideprotected boolean dispatchTap() {//点击我的位置显示PopupOverlayshowPopupOverlay(location);return super.dispatchTap();}Overridepublic void setMarker(Drawable arg0) {super.setMarker(arg0);}}Overrideprotected void onDestroy() {//MapView的生命周期与Activity同步当activity销毁时需调用MapView.destroy()mMapView.destroy();//退出应用调用BMapManager的destroy()方法if(mBMapManager ! null){mBMapManager.destroy();mBMapManager null;}//退出时销毁定位if (mLocClient ! null){mLocClient.stop();}super.onDestroy();}//* 显示弹出窗体图层PopupOverlayprivate void showPopupOverlay(BDLocation location){TextView popText ((TextView)viewCache.findViewById(R.id.location_tips));popText.setText([我的位置]\n location.getAddrStr());mPopupOverlay.showPopup(getBitmapFromView(popText),new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1e6)),15);}// * 将View转换成Bitmap的方法public static Bitmap getBitmapFromView(View view) {view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());view.buildDrawingCache();Bitmap bitmap view.getDrawingCache();return bitmap;}}有关性能的优化这里不多解说正在学习中。。。/呵呵