Code Bye

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

本人是按网上论坛写的  让后下载他们的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);
	}
}
解决方案

20

这个是很早就认定的事情,百度也会出来一堆结果的。
1.代码纠偏  2.查询纠偏数据库。
第1种方便些。

5

好单纯的题主,本人告诉你,在中国全部正规的地图都是偏的,谷歌地图不想偏被赶走了.
要在哪个地图上显示,就要使用哪个地图对应的转换函数,不能混用,而且不能反向转换.

10

1、试一下location.isOpenGps()
打开gps定位会不会好一些
2、BDLocationListener里,貌似获得了位置但是没在界面上更新吧?
这个看百度的location的demo就好了

5

CoordinateConverter类,限于V3以上版本。
我们用的著名的付费火星地图。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明百度地图定位 为什么经纬度是准确的 而在地图上标注却偏离很远