package baidumapsdk.demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.DrivingRouteOvelray;
import com.baidu.mapapi.overlayutil.OverlayManager;
import com.baidu.mapapi.overlayutil.TransitRouteOverlay;
import com.baidu.mapapi.overlayutil.WalkingRouteOverlay;
import com.baidu.mapapi.search.core.RouteLine;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.route.DrivingRouteLine;
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
import com.baidu.mapapi.search.route.DrivingRouteResult;
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
import com.baidu.mapapi.search.route.PlanNode;
import com.baidu.mapapi.search.route.RoutePlanSearch;
import com.baidu.mapapi.search.route.TransitRouteLine;
import com.baidu.mapapi.search.route.TransitRoutePlanOption;
import com.baidu.mapapi.search.route.TransitRouteResult;
import com.baidu.mapapi.search.route.WalkingRouteLine;
import com.baidu.mapapi.search.route.WalkingRoutePlanOption;
import com.baidu.mapapi.search.route.WalkingRouteResult;
/**
* 此demo用来展示如何进行驾车、步行、公交路线搜索并在地图使用RouteOverlay、TransitOverlay绘制
* 同时展示如何进行节点浏览并弹出泡泡
*/
public class RoutePlanDemo extends Activity implements
BaiduMap.OnMapClickListener, OnGetRoutePlanResultListener {
// 浏览路线节点相关
Button mBtnPre = null;// 上一个节点
Button mBtnNext = null;// 下一个节点
int nodeIndex = -2;// 节点索引,供浏览节点时使用
RouteLine route = null;
OverlayManager routeOverlay = null;
boolean useDefaultIcon = false;
private TextView popupText = null;// 泡泡view
private View viewCache = null;
// 地图相关,使用继承MapView的MyRouteMapView目的是重写touch事件实现泡泡处理
// 如果不处理touch事件,则无需继承,直接使用MapView即可
MapView mMapView = null; // 地图View
BaiduMap mBaidumap = null;
// 搜索相关
RoutePlanSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_routeplan);
// 标题
CharSequence titleLable = "路线规划功能";
setTitle(titleLable);
// 初始化地图
mMapView = (MapView) findViewById(R.id.map);
mBaidumap = mMapView.getMap();
mBtnPre = (Button) findViewById(R.id.pre);
mBtnNext = (Button) findViewById(R.id.next);
// 设置上一个节点、下一个节点为不可见
mBtnPre.setVisibility(View.INVISIBLE);
mBtnNext.setVisibility(View.INVISIBLE);
// 地图点击事件处理
mBaidumap.setOnMapClickListener(this);
// 初始化搜索模块,注册事件监听
mSearch = RoutePlanSearch.newInstance();
// 注册路线规划回调事件
mSearch.setOnGetRoutePlanResultListener(this);
}
/**
* 发起路线规划搜索示例
*
* @param v
*/
public void SearchButtonProcess(View v) {
// 重置浏览节点的路线数据
route = null;
mBtnPre.setVisibility(View.INVISIBLE);
mBtnNext.setVisibility(View.INVISIBLE);
// 清除map
mBaidumap.clear();
// 处理搜索按钮响应
// 起点名称
EditText editSt = (EditText) findViewById(R.id.start);
// 终点名称
EditText editEn = (EditText) findViewById(R.id.end);
// 设置起终点信息,对于tranist search 来说,城市名无意义 路径规划中的出行节点信息,出行节点包括:起点,终点,途经点
// 起点
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", editSt
.getText().toString());
// 终点
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", editEn
.getText().toString());
// 实际使用中请对起点终点城市进行正确的设定
if (v.getId() == R.id.drive) {
// 驾车搜索
// drivingSearch 发起驾车路线规划 DrivingRoutePlanOption :起点、终点
mSearch.drivingSearch((new DrivingRoutePlanOption()).from(stNode)
.to(enNode));
} else if (v.getId() == R.id.transit) {
// 公交搜索
// transitSearch 发起换乘路线规划 TransitRoutePlanOption:起点、城市、终点
mSearch.transitSearch((new TransitRoutePlanOption()).from(stNode)
.city("北京").to(enNode));
} else if (v.getId() == R.id.walk) {
// 步行搜索
// walkingSearch 发起步行路线规划 WalkingRoutePlanOption:起点、终点
mSearch.walkingSearch((new WalkingRoutePlanOption()).from(stNode)
.to(enNode));
}
}
/**
* 节点浏览示例
*
* @param v
*/
public void nodeClick(View v) {
// 当节点为空或获取路线中的所有路段为空时候,直接跳出不处理
if (nodeIndex < -1 || route == null || route.getAllStep() == null
|| nodeIndex > route.getAllStep().size()) {
return;
}
// 设置节点索引
// 当当前节点小于查出的路线的所有节点时候,推进节点++
if (v.getId() == R.id.next && nodeIndex < route.getAllStep().size() - 1) {
nodeIndex++;
// 后退到千一个节点--
} else if (v.getId() == R.id.pre && nodeIndex > 1) {
nodeIndex--;
}
//小于零或等于直接退出不处理
if (nodeIndex < 0 || nodeIndex >= route.getAllStep().size()) {
return;
}
// 获取节结果信息
LatLng nodeLocation = null;
String nodeTitle = null;
Object step = route.getAllStep().get(nodeIndex);
if (step instanceof DrivingRouteLine.DrivingStep) {
nodeLocation = ((DrivingRouteLine.DrivingStep) step).getEntrace()
.getLocation();
nodeTitle = ((DrivingRouteLine.DrivingStep) step).getInstructions();
} else if (step instanceof WalkingRouteLine.WalkingStep) {
nodeLocation = ((WalkingRouteLine.WalkingStep) step).getEntrace()
.getLocation();
nodeTitle = ((WalkingRouteLine.WalkingStep) step).getInstructions();
} else if (step instanceof TransitRouteLine.TransitStep) {
nodeLocation = ((TransitRouteLine.TransitStep) step).getEntrace()
.getLocation();
nodeTitle = ((TransitRouteLine.TransitStep) step).getInstructions();
}
if (nodeLocation == null || nodeTitle == null) {
return;
}
// 移动节点至中心
mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(nodeLocation));
// show popup
viewCache = getLayoutInflater()
.inflate(R.layout.custom_text_view, null);
popupText = (TextView) viewCache.findViewById(R.id.textcache);
popupText.setBackgroundResource(R.drawable.popup);
popupText.setText(nodeTitle);
mBaidumap.showInfoWindow(new InfoWindow(popupText, nodeLocation, null));
}
/**
* 切换路线图标,刷新地图使其生效 注意: 起终点图标使用中心对齐.
*/
public void changeRouteIcon(View v) {
if (routeOverlay == null) {
return;
}
if (useDefaultIcon) {
((Button) v).setText("自定义起终点图标");
Toast.makeText(this, "将使用系统起终点图标", Toast.LENGTH_SHORT).show();
} else {
((Button) v).setText("系统起终点图标");
Toast.makeText(this, "将使用自定义起终点图标", Toast.LENGTH_SHORT).show();
}
useDefaultIcon = !useDefaultIcon;
routeOverlay.removeFromMap();
routeOverlay.addToMap();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是最新版的android百度地图开发教程,里面有架包、demo、以及文档,是您学习安卓地图开发的利器,主要是看里面的demo,这个demo是百度官网的,但是官网的注释没有很全面,但是我把注释补充的很全面了,很适合新手学习,掌握里面的demo,你就掌握了百度地图开发了,在工作中绝对无压力了
资源推荐
资源详情
资源评论
收起资源包目录
android 百度地图开发最新版教程包括文档以及例子架包 (585个子文件)
resources.ap_ 105KB
BaiduMapsApiDemo.apk 1.68MB
jarlist.cache 120B
RoutePlanDemo.class 11KB
ShareDemoActivity.class 9KB
BusLineSearchDemo.class 9KB
OfflineDemo.class 8KB
MapControlDemo.class 7KB
PoiSearchDemo.class 7KB
OverlayDemo.class 6KB
GeoCoderDemo.class 5KB
CloudSearchActivity.class 5KB
GeometryDemo.class 5KB
BMapApiDemoMain.class 4KB
LocationDemo.class 4KB
NaviDemo.class 3KB
OverlayDemo$1.class 3KB
OfflineDemo$LocalMapAdapter.class 3KB
MapFragmentDemo.class 3KB
R$string.class 3KB
R$id.class 3KB
UISettingDemo.class 3KB
LocationDemo$1.class 2KB
BaseMapDemo.class 2KB
LocationDemo$MyLocationListenner.class 2KB
MapControlDemo$5$1.class 2KB
MultiMapViewDemo.class 2KB
MapControlDemo$5.class 2KB
PoiSearchDemo$1.class 2KB
OfflineDemo$LocalMapAdapter$2.class 2KB
LocationDemo$2.class 2KB
ShareDemoActivity$PoiShareOverlay.class 2KB
LayersDemo.class 2KB
BMapApiDemoMain$SDKReceiver.class 2KB
BMapApiDemoMain$DemoListAdapter.class 2KB
PoiSearchDemo$MyPoiOverlay.class 2KB
OverlayDemo$1$1.class 1KB
OfflineDemo$LocalMapAdapter$1.class 1KB
CloudSearchActivity$1.class 1KB
CloudSearchActivity$3.class 1KB
R$drawable.class 1KB
OverlayDemo$1$2.class 1KB
CloudSearchActivity$2.class 1KB
R$layout.class 1KB
CloudSearchActivity$4.class 1KB
OverlayDemo$1$3.class 1KB
BMapApiDemoMain$1.class 1KB
MapControlDemo$1.class 1KB
RoutePlanDemo$MyWalkingRouteOverlay.class 1KB
RoutePlanDemo$MyTransitRouteOverlay.class 1KB
RoutePlanDemo$MyDrivingRouteOverlay.class 1KB
MapControlDemo$4.class 1KB
MapControlDemo$3.class 1KB
MapControlDemo$2.class 1KB
BMapApiDemoMain$DemoInfo.class 1KB
NaviDemo$1.class 971B
CloudSearchDemo.class 968B
ShareDemo.class 942B
NaviDemo$2.class 850B
GeometryDemo$2.class 793B
GeometryDemo$1.class 793B
R.class 517B
Manifest$permission.class 505B
DemoApplication.class 496B
Manifest.class 369B
BuildConfig.class 341B
R$attr.class 334B
.classpath 475B
stylesheet.css 11KB
classes.dex 1.1MB
titlebar.gif 10KB
background.gif 2KB
titlebar_end.gif 849B
tab.gif 291B
index-7.html 87KB
index-18.html 65KB
LatLng.html 62KB
BaiduMap.html 41KB
index-14.html 39KB
overview-tree.html 34KB
TextOptions.html 31KB
GroundOverlayOptions.html 27KB
index-15.html 26KB
MarkerOptions.html 24KB
index-3.html 22KB
allclasses-frame.html 22KB
index-2.html 21KB
MKOfflineMap.html 21KB
constant-values.html 21KB
GroundOverlay.html 20KB
BitmapDescriptor.html 20KB
allclasses-noframe.html 20KB
MapStatusUpdateFactory.html 19KB
Text.html 19KB
ArcOptions.html 19KB
index-19.html 19KB
CircleOptions.html 19KB
index-9.html 19KB
MKOLUpdateElement.html 19KB
package-summary.html 19KB
共 585 条
- 1
- 2
- 3
- 4
- 5
- 6
卑微的戏子
- 粉丝: 61
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页