package baidumapsdk.demo.util;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.navi.BaiduMapAppNotSupportNaviException;
import com.baidu.mapapi.navi.BaiduMapNavigation;
import com.baidu.mapapi.navi.NaviParaOption;
import com.baidu.mapapi.utils.OpenClientUtil;
import com.baidu.mapapi.utils.poi.BaiduMapPoiSearch;
import com.baidu.mapapi.utils.poi.PoiParaOption;
import com.baidu.mapapi.utils.route.BaiduMapRoutePlan;
import com.baidu.mapapi.utils.route.RouteParaOption;
import com.baidu.mapapi.utils.route.RouteParaOption.EBusStrategyType;
import java.util.ArrayList;
import java.util.List;
import baidumapsdk.demo.R;
/**
* 此Demo用来说明调起百度地图功能
*/
public class OpenBaiduMap extends Activity {
// 天安门坐标
double mLat1 = 39.915291;
double mLon1 = 116.403857;
// 百度大厦坐标
double mLat2 = 40.056858;
double mLon2 = 116.308194;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_baidumap);
TextView text = (TextView) findViewById(R.id.open_Info);
text.setTextColor(Color.YELLOW);
text.setText("当手机没有安装百度地图客户端或版本过低时,默认调起百度地图webApp");
ListView mListView = (ListView) findViewById(R.id.listView_openBaiduMap);
mListView.setAdapter(new OpenBaiduMapListAdapter(getData()));
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch (position) {
case 0:
startNavi();
break;
case 1:
startWebNavi();
break;
case 2:
startPoiNearbySearch();
break;
case 3:
startPoiDetails();
break;
case 4:
startRoutePlanWalking();
break;
case 5:
startRoutePlanDriving();
break;
case 6:
startRoutePlanTransit();
break;
case 7:
startWalkingNavi();
break;
case 8:
startBikingNavi();
break;
case 9:
startPoiPanoShow();
break;
default:
break;
}
}
});
}
private List<String> getData() {
List<String> data = new ArrayList<String>();
data.add("启动百度地图导航(Native)");
data.add("启动百度地图导航(Web)");
data.add("启动百度地图Poi周边检索");
data.add("启动百度地图Poi详情页面");
data.add("启动百度地图步行路线规划");
data.add("启动百度地图驾车路线规划");
data.add("启动百度地图公交路线规划");
data.add("启动百度地图步行导航");
data.add("启动百度地图骑行导航");
data.add("启动百度地图全景");
return data;
}
/**
* 启动百度地图导航(Native)
*/
public void startNavi() {
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
// 构建 导航参数
NaviParaOption para = new NaviParaOption()
.startPoint(pt1).endPoint(pt2)
.startName("天安门").endName("百度大厦");
try {
BaiduMapNavigation.openBaiduMapNavi(para, this);
} catch (BaiduMapAppNotSupportNaviException e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图导航(Web)
*/
public void startWebNavi() {
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
// 构建 导航参数
NaviParaOption para = new NaviParaOption()
.startPoint(pt1).endPoint(pt2);
BaiduMapNavigation.openWebBaiduMapNavi(para, this);
}
/**
* 启动百度地图步行导航(Native)
*
*/
public void startWalkingNavi() {
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
// 构建 导航参数
NaviParaOption para = new NaviParaOption()
.startPoint(pt1).endPoint(pt2)
.startName("天安门").endName("百度大厦");
try {
BaiduMapNavigation.openBaiduMapWalkNavi(para, this);
} catch (BaiduMapAppNotSupportNaviException e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图骑行导航(Native)
*
*/
public void startBikingNavi() {
LatLng pt1 = new LatLng(mLat1, mLon1);
LatLng pt2 = new LatLng(mLat2, mLon2);
// 构建 导航参数
NaviParaOption para = new NaviParaOption()
.startPoint(pt1).endPoint(pt2)
.startName("天安门").endName("百度大厦");
try {
BaiduMapNavigation.openBaiduMapBikeNavi(para, this);
} catch (BaiduMapAppNotSupportNaviException e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图Poi周边检索
*/
public void startPoiNearbySearch() {
LatLng ptCenter = new LatLng(mLat1, mLon1); // 天安门
PoiParaOption para = new PoiParaOption()
.key("天安门")
.center(ptCenter)
.radius(2000);
try {
BaiduMapPoiSearch.openBaiduMapPoiNearbySearch(para, this);
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图Poi详情页面
*/
public void startPoiDetails() {
PoiParaOption para = new PoiParaOption().uid("65e1ee886c885190f60e77ff"); // 天安门
try {
BaiduMapPoiSearch.openBaiduMapPoiDetialsPage(para, this);
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图POI全景页面
*/
public void startPoiPanoShow() {
try {
BaiduMapPoiSearch.openBaiduMapPanoShow("65e1ee886c885190f60e77ff", this); // 天安门
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图步行路线规划
*/
public void startRoutePlanWalking() {
LatLng ptStart = new LatLng(34.264642646862, 108.95108518068);
LatLng ptEnd = new LatLng(mLat2, mLon2);
// 构建 route搜索参数
RouteParaOption para = new RouteParaOption()
.startPoint(ptStart)
// .startName("天安门")
// .endPoint(ptEnd);
.endName("大雁塔")
.cityName("西安");
// RouteParaOption para = new RouteParaOption()
// .startName("天安门").endName("百度大厦");
// RouteParaOption para = new RouteParaOption()
// .startPoint(pt_start).endPoint(pt_end);
try {
BaiduMapRoutePlan.openBaiduMapWalkingRoute(para, this);
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图驾车路线规划
*/
public void startRoutePlanDriving() {
LatLng ptStart = new LatLng(34.264642646862, 108.95108518068);
LatLng ptEnd = new LatLng(mLat2, mLon2);
// 构建 route搜索参数
RouteParaOption para = new RouteParaOption()
.startPoint(ptStart)
// .startName("天安门")
// .endPoint(ptEnd);
.endName("大雁塔")
.cityName("西安");
// RouteParaOption para = new RouteParaOption()
// .startName("天安门").endName("百度大厦");
// RouteParaOption para = new RouteParaOption()
// .startPoint(pt_start).endPoint(pt_end);
try {
BaiduMapRoutePlan.openBaiduMapDrivingRoute(para, this);
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
/**
* 启动百度地图公交路线规划
*/
public void startRoutePlanTransit() {
LatLng ptStart = new LatLng(mLat1, mLon1);
LatLng ptEnd = new LatLng(mLat2, mLon2);
// 构建 route搜索参数
RouteParaOption para = new RouteParaOption()
// .startPoint(pt_start)
.startName("天安门")
.endPoint(ptStart)
// .endName("百度大厦")
.busStrategyType(EBusStrategyType.bus_recommend_way);
// RouteParaOption para = new RouteParaOption()
// .startName("天安门").endName("百度大厦").busStrategyType(EBusStrategyType.bus_recommend_way);
// RouteParaOption para = new RouteParaOption()
// .startPoint(ptStart).endPoint(ptEnd).busStrategyType(EBusStrategyType.bus_recommend_way);
try {
BaiduMapRoutePlan.openBaiduMapTransitRoute(para, this);
} catch (Exception e) {
e.printStackTrace();
showDialog();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
BaiduMapNavigation.finish(this);
BaiduMapRoutePlan.finish(this);
BaiduMapPoiSearch.finish(this);
}
/**
* 提示未安装百度地图app或app版本过低
*/
public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("您尚未安装百度地图app或app版本过低,点击确认安装?");
builder.setTitle("提示");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
OpenClientUtil.getLatestBaiduMapApp(OpenBaiduMap.this);
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
private class OpenBaiduMapListAdapter extends BaseAdapter {
List<String> list;
public OpenBaiduMapListAdapter(List<String> list) {
super();
this.list = list;
}
@Override
public View getView(int index, View convertView, ViewGroup parent) {
convertView = View.inflate(OpenBaiduMap.this,
R.layout.demo_info_item, null);
TextView title = (TextView) convertView.findViewById(R.id.title);
TextView desc = (TextView) convertView.findViewById(R.id.desc);
desc.setVisibility(View.INVISIBLE);
title.setText(list.get(index));
return convertView;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int index) {
return list.get(index);
}
@Override
public long getItemId(int id) {
return id;
}
}
}