百度地图定位 为什么经纬度是准确的 而在地图上标注却偏离很远

小横 2015-05-11 05:07:15
我是按网上论坛写的 让后下载他们的demo地图上标注是正确的 而我自己的地图上标注却偏离很远

package com.example.baidu_text;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.baidu.lbsapi.BMapManager;
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.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.DotOptions;
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.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.nplatform.comapi.map.MapController;

public class MainActivity extends Activity {
MapView mMapView = null;
BaiduMap mBaiduMap;
String mm;
Button button;
double latitude;
double longitude;
BaiduMap bdMap;
private BMapManager mBMapManager;
BitmapDescriptor mCurrentMarker;
private MapController mMapController = null;
BDLocation location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView)findViewById(R.id.bmapView);

bdMap = mMapView.getMap();



LocationClient locationClient = new LocationClient(getApplicationContext());
LocationClientOption locOption = new LocationClientOption();
locOption.setLocationMode(LocationMode.Hight_Accuracy);
locOption.setCoorType("bd0911");
locOption.setScanSpan(5000);
locOption.setIsNeedAddress(true);
locOption.setNeedDeviceDirect(true);
locationClient.setLocOption(locOption);
locationClient.registerLocationListener(new MyLocationListener());
locationClient.start();
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

LatLng ll = new LatLng(latitude, longitude);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
bdMap.animateMapStatus(msu);
Toast.makeText(MainActivity.this, mm, Toast.LENGTH_LONG).show();
TextOptions textOptions = new TextOptions();
textOptions.bgColor(0xFFFF00)
.fontSize(10)
.fontColor(0xFFFF00FF)
.text("当前位置")
.rotate(-30)

.position(ll);
bdMap.addOverlay(textOptions);

String mm =latitude+"";
String nn =longitude+"";
Toast.makeText(MainActivity.this, mm+"__"+nn, Toast.LENGTH_LONG).show();
}
});


}

class MyLocationListener implements BDLocationListener{

@Override
public void onReceiveLocation(BDLocation arg0) {
mm = arg0.getCity();
latitude = arg0.getLatitude();
longitude = arg0.getLongitude();
location = arg0;


}

}
@Override
protected void onDestroy() {
super.onDestroy();

mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();

mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();

mMapView.onPause();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
...全文
9160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
做错下一步 2018-12-31
  • 打赏
  • 举报
回复
楼上那俩真是睿智。还故意偏差。。。。
看了百度的文档发现这么一句话

所以只要初始化的时候,调用LocationClientOption对象option.setCoorType("bd09ll");改坐标模式就好了
伟哥就来了 2016-06-28
  • 打赏
  • 举报
回复
我的是写的bd09ll,结果还是有偏差啊
小横 2015-05-14
  • 打赏
  • 举报
回复
谢谢大家了 我后来自己发现问题了 我把bd09ll 写成 bd0911了 真是马虎
开发者_android 2015-05-12
  • 打赏
  • 举报
回复
只是偶尔的吗? 因为,有时候,你给的经纬度对应的地址,它的数据库中也没有,所以,就选择一个比较接近的结果。 你试试换个有标志性的经纬度测试一下看看。
lovemoreh 2015-05-12
  • 打赏
  • 举报
回复
CoordinateConverter类,限于V3以上版本。 我们用的著名的付费火星地图。
windfury_plus 2015-05-12
  • 打赏
  • 举报
回复
1、试一下location.isOpenGps() 打开gps定位会不会好一些 2、BDLocationListener里,貌似获得了位置但是没在界面上更新吧? 这个看百度的location的demo就好了
tcmakebest 2015-05-12
  • 打赏
  • 举报
回复
好单纯的楼主,我告诉你,在中国所有正规的地图都是偏的,谷歌地图不想偏被赶走了. 要在哪个地图上显示,就要使用哪个地图对应的转换函数,不能混用,而且不能反向转换.
小横 2015-05-11
  • 打赏
  • 举报
回复
但是经纬度是正确的 就是物理位置不正确 是这个问题 我一开始好像没有说明白
小横 2015-05-11
  • 打赏
  • 举报
回复
我自己用的百度的api 用网友写的定位很标注很准确 我自己的 定位偏离很远
开发者_android 2015-05-11
  • 打赏
  • 举报
回复
这个是很早就认定的事情,百度也会出来一堆结果的。 1.代码纠偏 2.查询纠偏数据库。 第1种方便些。

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧