实现不了导航
首先,我不长按任何地方,直接按模拟导航,都不会打印出长按地图设置目标地点这句话
然后设置了目标点。点开始导航,没有任何反应
首先,我不长按任何地方,直接按模拟导航,都不会打印出长按地图设置目标地点这句话
然后设置了目标点。点开始导航,没有任何反应
2016-07-10
public class MainActivity extends Activity implements View.OnClickListener {
private TextureMapView mMapView;
private Button mBtnLocation;
private Button mBtnMockNav;
private Button mBtnRealNav;
private BaiduMap mBaiduMap;
private String mSdcardPath=null;
private String authinfo = null;
private static final String APP_FOLDER_NAME="BNSDKDemo-Imooc-y";
public static final String ROUTE_PLAN_NODE="routePlanNode";
//定位相关
private LocationClient mLocationClient;
private boolean isFirstLocation=true;
private LatLng mLastLocationData;
private LatLng mDestLocationData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//定位相关
initLocation();
mMapView = (TextureMapView) findViewById(R.id.bmapView);
mBtnLocation = (Button)findViewById(R.id.id_btn_location);
mBtnMockNav = (Button) findViewById(R.id.id_btn_mocknav);
mBtnRealNav = (Button)findViewById(R.id.id_btn_realnav);
if (initDirs()){
initNavi();
}
//定位按钮
mBtnLocation.setOnClickListener(this);
mBtnMockNav.setOnClickListener(this);
mBtnRealNav.setOnClickListener(this);
//更新地图的设置
mBaiduMap=mMapView.getMap();
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(18.0f);
mBaiduMap.setMapStatus(msu);
//初始化导航相关
mBaiduMap.setOnMapLongClickListener(new BaiduMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng arg0) {
Toast.makeText(MainActivity.this,"设置目的地成功",Toast.LENGTH_SHORT).show();
mDestLocationData =arg0;
addDestInfoOverlay(arg0);
}
});
}
private void initNavi() {
BaiduNaviManager.getInstance().init(this, mSdcardPath, APP_FOLDER_NAME,
new BaiduNaviManager.NaviInitListener() {
@Override
public void onAuthResult(int status, String msg) {
if (0 == status) {
authinfo = "key校验成功!";
} else {
authinfo = "key校验失败, " + msg;
}
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, authinfo,
Toast.LENGTH_LONG).show();
}
});
}
public void initSuccess() {
Toast.makeText(MainActivity.this, "百度导航引擎初始化成功",
Toast.LENGTH_SHORT).show();
}
public void initStart() {
Toast.makeText(MainActivity.this, "百度导航引擎初始化开始",
Toast.LENGTH_SHORT).show();
}
public void initFailed() {
Toast.makeText(MainActivity.this, "百度导航引擎初始化失败",
Toast.LENGTH_SHORT).show();
}
},mTTSCallback);
}
private BNOuterTTSPlayerCallback mTTSCallback = new BNOuterTTSPlayerCallback() {
@Override
public void stopTTS() {
// TODO Auto-generated method stub
}
@Override
public void resumeTTS() {
// TODO Auto-generated method stub
}
@Override
public void releaseTTSPlayer() {
// TODO Auto-generated method stub
}
@Override
public int playTTSText(String speech, int bPreempt) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void phoneHangUp() {
// TODO Auto-generated method stub
}
@Override
public void phoneCalling() {
// TODO Auto-generated method stub
}
@Override
public void pauseTTS() {
// TODO Auto-generated method stub
}
@Override
public void initTTSPlayer() {
// TODO Auto-generated method stub
}
@Override
public int getTTSState() {
// TODO Auto-generated method stub
return 0;
}
};
private boolean initDirs() {
mSdcardPath = getSdcardDir();
if ( mSdcardPath == null ) {
return false;
}
File f = new File(mSdcardPath, APP_FOLDER_NAME);
if ( !f.exists() ) {
try {
f.mkdir();
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
return true;
}
private String getSdcardDir() {
if (Environment.getExternalStorageState().equalsIgnoreCase(
Environment.MEDIA_MOUNTED)) {
return Environment.getExternalStorageDirectory().toString();
}
return null;
}
private void addDestInfoOverlay(LatLng destInfo){
mBaiduMap.clear();
OverlayOptions options =new MarkerOptions().position(destInfo)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.myloc9))
.zIndex(5);
mBaiduMap.addOverlay(options);
}
private void initLocation(){
//声明LocationClient类
mLocationClient = new LocationClient(getApplicationContext());
initLocationOps();
mLocationClient.registerLocationListener(new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
if (location == null || mMapView == null)
return;
//构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
.latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
//设置定位数据
mBaiduMap.setMyLocationData(locData);
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
mLastLocationData = ll;
if (isFirstLocation) {
isFirstLocation = false;
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
}
});
}
private void initLocationOps() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setCoorType("bd09ll");
int span =1000;
option.setScanSpan(span);
option.setIsNeedAddress(true);
option.setOpenGps(true);
mLocationClient.setLocOption(option);
}
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onStart() {
super.onStart();
mBaiduMap.setMyLocationEnabled(true);
if (!mLocationClient.isStarted()){
mLocationClient.start();
}
}
@Override
protected void onStop() {
super.onStop();
mBaiduMap.setMyLocationEnabled(false);
mLocationClient.stop();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
举报