Toast提示位置正確,但是不顯示地圖,也不顯示藍色按鈕
package com.example.mytab_fragment_viewpager;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;
public class myMap extends Activity{
private MapView mMapView ;
private BaiduMap mBaiduMap;
private Context context;
//定位相關(guān)
private LocationClient mLocationClient;//定位API,設(shè)置是否開啟GPS等信息
private MyLocationListener mLocationListener;//定位監(jiān)聽器
private boolean isFirstIn=true;
private double mLatitude;//記錄最新經(jīng)緯度
private double mLongtitude;
@Override ?
? ? protected void onCreate(Bundle savedInstanceState) { ?
? ? ? ? super.onCreate(savedInstanceState); ??
? ? ? ? requestWindowFeature(Window.FEATURE_NO_TITLE);
? ? ? ? //在使用SDK各組件之前初始化context信息,傳入ApplicationContext ?
? ? ? ? //注意該方法要再setContentView方法之前實現(xiàn) ?
? ? ? ? SDKInitializer.initialize(getApplicationContext()); ?
? ? ? ? setContentView(R.layout.mymap); ?
? ? ? ??
? ? ? ? this.context=this;
? ? ? ? initView();
? ? ? ??
? ? ? ? //初始化定位
? ? ? ? initLocation();
? ? ? ??
? ? }
private void initLocation() {
// TODO Auto-generated method stub
mLocationClient=new LocationClient(this);
mLocationListener=new MyLocationListener();
mLocationClient.registerLocationListener(mLocationListener);//進行注冊
//對LocationClient進行配置
LocationClientOption option=new LocationClientOption();
option.setCoorType("bd09ll");//坐標類型
option.setIsNeedAddress(true);//返回當前位置
option.setOpenGps(true);
option.setScanSpan(1000);//每隔1秒鐘做一次請求
mLocationClient.setLocOption(option);//設(shè)置
}
private void initView() {
// TODO Auto-generated method stub
//獲取地圖控件引用?
mMapView = (MapView) findViewById(R.id.id_bmapView);
mBaiduMap=mMapView.getMap();
MapStatusUpdate msu=MapStatusUpdateFactory.zoomTo(15.0f);//將百度地圖設(shè)置放大到500米
mBaiduMap.setMapStatus(msu);
} ?
? ? @Override ?
? ? protected void onResume() { ?
? ? ? ? super.onResume(); ?
? ? ? ? //在activity執(zhí)行onResume時執(zhí)行mMapView. onResume (),實現(xiàn)地圖生命周期管理 ?
? ? ? ? mMapView.onResume(); ?
? ? ? ? } ?
? ? @Override
? ? protected void onStart() {
? ? // 開啟定位
? ? super.onStart();
? ? mBaiduMap.setMyLocationEnabled(true);//開啟定位允許
? ? if(!mLocationClient.isStarted())
? ? mLocationClient.start();//開啟定位
? ? }
? ??
? ? @Override ?
? ? protected void onPause() { ?
? ? ? ? super.onPause(); ?
? ? ? ? //在activity執(zhí)行onPause時執(zhí)行mMapView. onPause (),實現(xiàn)地圖生命周期管理 ?
? ? ? ?// mMapView.onPause();?
? ? ? ? mMapView.onDestroy();
? ? ? ? } ?
? ? @Override
? ? protected void onStop() {
? ? // 關(guān)閉定位
? ? super.onStop();
? ? //停止定位?
? ? mBaiduMap.setMyLocationEnabled(false);//不允許定位
? ? mLocationClient.stop();
? ? }
? ? @Override ?
? ? protected void onDestroy() { ?
? ? ? ? super.onDestroy(); ?
? ? ? ? //在activity執(zhí)行onDestroy時執(zhí)行mMapView.onDestroy(),實現(xiàn)地圖生命周期管理 ?
? ? ? ? mMapView.onDestroy(); ?
? ? } ?
? ? @Override
public boolean onCreateOptionsMenu(Menu menu) {//添加按鈕
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.id_map_common:
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//普通地圖
break;
? ? ? ? case R.id.id_map_site:
? ? ? ? mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//衛(wèi)星地圖
break;
? ? ? ? case R.id.id_map_traffic:
? ? ? ?if(mBaiduMap.isTrafficEnabled()){
? ? ? ? mBaiduMap.setTrafficEnabled(false);//實時交通
? ? ? ? item.setTitle("關(guān)閉實時交通");
? ? ? ?}else{
? ? ? ? mBaiduMap.setTrafficEnabled(true);
? ? ? ? item.setTitle("打開實時交通");
? ? ? ?}
? ? ? ?break;
? ? ? ? case R.id.id_map_location:
? ? ? ? centerToMyLocation();
break;
default:
break;
}
// TODO Auto-generated method stub
return super.onOptionsItemSelected(item);
}
/*
* 定位到我的位置
*/
private void centerToMyLocation() {
LatLng latLng=new LatLng(mLatitude, mLongtitude);//獲取經(jīng)緯度
MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.animateMapStatus(msu);
}
private class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {//定位成功后的回調(diào)
// TODO Auto-generated method stub
MyLocationData data=new MyLocationData.Builder()//Builder()模式(當參數(shù)比較多時,使用Builder內(nèi)部類)
.accuracy(location.getRadius())//精度
.latitude(location.getLongitude())//
.longitude(location.getLongitude())//
.build();
mBaiduMap.setMyLocationData(data);
//MyLocationConfiguration config=new MyLocationConfiguration(LocationMode.NORMAL, arg1, arg2);
//獲取最新經(jīng)緯度
mLatitude=location.getLatitude();
mLongtitude=location.getLongitude();
if(isFirstIn){//第一次進入時中心定位在用戶所在位置
LatLng latLng=new LatLng(location.getLatitude(), location.getLongitude());//獲取經(jīng)緯度
MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.animateMapStatus(msu);//檢驗更新;地圖的位置用動畫的形式傳過去
isFirstIn=false;
Toast.makeText(context, location.getAddrStr(), Toast.LENGTH_SHORT).show();
}
}
}
}
2016-04-09
你定位那里,有問題,好好看看老師的源碼。
2016-04-24
請問下解決了嗎?我是沒有藍色按鈕