百度地圖定位android
① android百度地圖用gps定位出現偏移,怎麼解決
原因:
1丶檢查手機是否有明顯的碰撞痕跡,可能是由於手機進行了碰撞而導致手機的gps損壞從而無法進行定位。有的人手機摔了之後無線網就不能用了,或者藍牙不能開,都是因為手機碰撞造成的。
2丶進入網路地圖的app,檢查是否是最新版本的app手機應用,如果不是,請及時進行更新,如果是經常處在wifi環境下,可以勾選wifi環境下自動更新的選項。
3丶在手機的安全中心中,查看是否給了網路地圖app的許可權,如果沒有的話,可以打開,這樣一來,手機授權網路地圖gps定位服務,從而使網路地圖可以定位自己的位置。
4丶檢查一下自己下的網路地圖app是否是真正的官方授權的正版軟體。
② android 百度地圖怎麼獲取不到GPS定位
這種只有兩種可能,一種可能是你的無線網路沒有開數據流量沒有打開,造成網路地圖連不上網。
第二種就是你的GPS定位沒有打開。
兩種情況都有可能。
切記必須同時打開GPS定位和數據流量或者無線wifi。
③ android 版百度地圖如何通過定位功能獲得當前的位置所在的城市
網路地圖是通過移動通信基站定位來確定當前位置所在的城市。其原理就是通過測算周圍基站與手機的距離來交會估算手機的空間位置。
手機定位是指通過特定的定位技術來獲取移動手機或終端用戶的位置信息(經緯度坐標),在電子地圖上標出被定位對象的位置的技術或服務。定位技術有兩種,一種是基於GPS的定位,一種是基於移動運營網的基站的定位。基於GPS的定位方式是利用手機上的GPS定位模塊將自己的位置信號發送到定位後台來實現手機定位的。基站定位則是利用基站對手機的距離的測算距離來確定手機位置的。後者不需要手機具有GPS定位能力,但是精度很大程度依賴於基站的分布及覆蓋范圍的大小,有時誤差會超過一公里。前者定位精度較高。此外還有利用Wifi在小范圍內定位的方式。
④ android怎麼使用百度地圖定位
打開應用商店,搜索網路地圖,下載安裝
安裝完成,雙擊打開網路地圖
打開界面,會提示你,打開GPS開關,這樣就可以更好的定位
打開定位後,點我的-離線包下載-下載離線地圖-選擇城市列表-所在城市下載,離線地圖的用處就是可以不用開流量也可以定位
點圖標,會自動定位,你所在位置
⑤ 怎麼在android百度地圖通過經緯度來定位並且顯示出地圖位置
可以參考如下內容:
使用Android自帶的LocationManager和Location獲取位置的時候,經常會有獲取的location為null的情況,並且操作起來也不是很方便,在這個Demo里我使用了網路地圖API中的定位SDK,可以一次性獲取當前位置經緯度以及詳細地址信息,還可以獲取周邊POI信息,同時可以設定位置通知點,當到達某一位置時,發出通知信息等方式來告知用戶。jar包下載以及官方文檔請參照:網路定位SDK,前提是需要注冊網路開發者賬號。
下面來看看定位的基本原理,目前,定位SDK可以通過GPS、基站、Wifi信號進行定位。基本定位流程如下圖所示,當應用程序向定位SDK發起定位請求時,定位SDK會根據當前的GPS、基站、Wifi信息生成相對應的定位依據。然後定位SDK會根據定位依據來進行定位。如果需要,定位SDK會向定位伺服器發送網路請求。定位伺服器會根據請求的定位依據推算出對應的坐標位置,然後根據用戶的定製信息,生成定位結果返回給定位SDK。
⑥ Android開發中百度地圖的定位為什麼總是北京,不是自己的位置
給,對照一下
可能的問題:1.用虛擬機,虛擬機定位就是在北京。
2.手機(或虛擬機)是否開啟了GPS功能
------------------------------
public class MainActivity extends AppCompatActivity {
MapView mMapView = null;
private BaiMap mBaiDuMap;
public LocationClient mLocationClient;
// public BDLocationListener myListener = new MyLocationListener();
public MyLocationListener myListener = new MyLocationListener();
private BitmapDescriptor mCurrentMarker;
private MyLocationConfiguration.LocationMode mCurrentMode;
// 經緯度
private TextView tvJingDu;
// 緯度
private TextView tvWeiDu;
// 高度
private TextView tvGaoDu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
// 經緯度TextView 初始化
tvJingDu = (TextView) findViewById(R.id.tv_jing_);
tvWeiDu = (TextView) findViewById(R.id.tv_wei_);
tvGaoDu = (TextView) findViewById(R.id.tv_gao_);
//===================================
// 普通模式
mCurrentMode = MyLocationConfiguration.LocationMode.COMPASS;
// TODO
// mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.dingwei);
mCurrentMarker = null;
// 找到地圖控制項
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiDuMap = mMapView.getMap();// 獲取地圖
mBaiDuMap.setMapType(BaiMap.MAP_TYPE_NORMAL);// 設置地圖模式為普通模式
// 開啟定點陣圖層
mBaiDuMap.setMyLocationEnabled(true);
mLocationClient = new LocationClient(this); // 定位用到一個類
mLocationClient.registerLocationListener(myListener);// 注冊監聽
// TODO
mBaiDuMap.setMyLocationConfigeration(new MyLocationConfiguration(
mCurrentMode, true, mCurrentMarker, R.color.myBlue, Color.YELLOW
));
// LocationClientOption類用來設置SDK的位置方式
LocationClientOption option = new LocationClientOption();//以下是給定位設置參數
option.setOpenGps(true); // 打開gps
option.setCoorType("bd09ll"); // 設置坐標類型
option.setScanSpan(2000);
mLocationClient.setLocOption(option);
mLocationClient.start();
}
boolean isFirstLoc = true; // 是否首次定位
// 3.網路位置監聽
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
Log.i("監聽被執行了", "監聽被執行了");
if (location == null || mMapView == null) {
return;
}
// // 定位結果
// StringBuffer sb = new StringBuffer(256);
// StringBuffer sb1 = new StringBuffer(256);
// StringBuffer sb2 = new StringBuffer(256);
// // 經度
// String jd = sb.append(location.getLongitude()).toString();
// tvJingDu.setText("" + jd);
// Log.i("經度", "" + jd);
// // 緯度
// String wd = sb1.append(location.getLatitude()).toString();
// tvWeiDu.setText("" + sb1);
// Log.i("緯度", "" + wd);
//
// String gao = sb.append(location.getAltitude()).toString();
// tvGaoDu.setText("" + gao);
// 經度
double d1 = location.getLongitude();
String s1 = "" + d1;
tvWeiDu.setText(s1);
Log.i("經度", "" + s1);
// 緯度
double d2 = location.getLatitude();
Log.i("TGA", "d2" + d2);
String s2 = "" + d2;
tvJingDu.setText(s2);
Log.i("緯度", "" + s2);
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此處設置開發者獲取到的方向信息,順時針0-360
.direction(0).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiDuMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
// 縮放的等級 12.0f
builder.target(ll).zoom(18.0f);
mBaiDuMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
Log.i("MyLocationListener被執行了!", "onReceiveLocation");
}
@Override
public void onConnectHotSpotMessage(String s, int i) {
}
}
// 結束方法
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
}
⑦ 為什麼百度地圖android定位不準確
都會有誤差的情況,參考如下內容解釋:
基站精度為平均200米左右,視運營商基站覆蓋范圍而定。WIFI精度為20米左右。GPS精度最高,為10米左右(取決於晶元)。在戶外,先開啟GPS再進行定位,結果較准。但GPS比較費電,且在室內不可用。
另外,&addr=detail 想要獲取完整地址(詳細到門牌號),或者&addr=rough 想要獲得到城市一個級別的地址(比如返回中國北京北京);
上面這段是網路官方文檔裡面的解釋: 這個我 在做的時候基本是這種情況, 文檔裡面提到的 精度取決於晶元的問題,其實就是不同手機設備的差異。這個我專門做過測試,我用了5台手機測試: htc one ,三星I9118,htc t328w,紅米1s,聯想a820 。 這5台手機在室外同一個位置網路地圖定位獲取 經緯度坐標,測試結果是:
htc one 誤差2-3米 有時候是0-1米 非常精確了相對來說,htc t328w 紅米1s,聯想 都是 15-30米左右,三星那個機型稍微差點 定位速度不僅慢,而且誤差也較大 誤差有時候是200多米,穩定後也是80米左右。這個穩定的意思是 ,gps初始化需要時間的,一般要2-3分鍾以後,誤差范圍的數字會越來越小。
獲取誤差范圍的方法是:BDLocation類下的方法 location.getRadius();//獲取定位精度
⑧ 為什麼百度地圖 Android 版不用開啟 GPS 就能實現定位
手機版網路地圖定位有多種方式,有衛星定位(包括GPS)、IP定位(接入數據網路)、WIFI小區定位(接入WLAN熱點),等等。上述各種定位方式只要有一種具備條件,就可以實現定位,並非必須開啟GPS。
網路地圖的WIFI小區定位還有個特點,就是連接WIFI時,並不需要必須接通網路,有時只要搜索到信號就可以定位。