本人是按网上论坛写的 让后下载他们的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种方便些。
1.代码纠偏 2.查询纠偏数据库。
第1种方便些。
5
好单纯的题主,本人告诉你,在中国全部正规的地图都是偏的,谷歌地图不想偏被赶走了.
要在哪个地图上显示,就要使用哪个地图对应的转换函数,不能混用,而且不能反向转换.
要在哪个地图上显示,就要使用哪个地图对应的转换函数,不能混用,而且不能反向转换.
10
1、试一下location.isOpenGps()
打开gps定位会不会好一些
2、BDLocationListener里,貌似获得了位置但是没在界面上更新吧?
这个看百度的location的demo就好了
打开gps定位会不会好一些
2、BDLocationListener里,貌似获得了位置但是没在界面上更新吧?
这个看百度的location的demo就好了
5
CoordinateConverter类,限于V3以上版本。
我们用的著名的付费火星地图。
我们用的著名的付费火星地图。