百度地图定位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时,并不需要必须接通网络,有时只要搜索到信号就可以定位。