楼顶上装百度地图gps卫星定位系统地图有影响吗

百度地图有没移动定位系统_百度知道
百度地图有没移动定位系统
我有更好的答案
百度不知道,但我知道“位智天下” 的smartlbs智能定位系统可以移动定位。
百度地图是支持移动定位系统的,但是你手机支持不支持移动定位呢
百度地图支持GPS定位,不支持Cell-ID(移动基站)定位
这要看你的手机支不支持了
其他类似问题
为您推荐:
百度地图的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁后使用快捷导航没有帐号?
暂时没有人问过相似的问题,你可以做第一个提问题的人
查看: 10367|回复: 14
【新手求助】为什么BDLocationListener没有被调用?
权限都加了,密钥也是对的,service也加了,为什么BDLocationListener 始终没有运行?
package com.nanhua.
import android.app.A
import android.os.B
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import com.baidu.location.BDL
import com.baidu.location.BDLocationL
import com.baidu.location.LocationC
import com.baidu.location.LocationClientO
import com.baidu.location.LocationClientOption.LocationM
import com.baidu.mapapi.SDKI
import com.baidu.mapapi.map.BaiduM
import com.baidu.mapapi.map.BitmapD
import com.baidu.mapapi.map.BitmapDescriptorF
import com.baidu.mapapi.map.MapStatusUpdateF
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.MarkerO
import com.baidu.mapapi.map.MyLocationD
import com.baidu.mapapi.map.MyLocationData.B
import com.baidu.mapapi.map.OverlayO
import com.baidu.mapapi.model.LatL
public class MainActivity extends Activity {
& & & & // 地图视图
& & & & MapView mMapView =
& & & & // 定义 BaiduMap 地图对象的操作方法与接口
& & & & BaiduMap mBaiduMap =
& & & & // 定位SDK的核心类
& & & & LocationClient mLocationC
& & & & // 定位数据
& & & & MyLocationData locationD
& & & & @Override
& & & & protected void onCreate(Bundle savedInstanceState) {
& & & & & & & & super.onCreate(savedInstanceState);
& & & & & & & & // 在使用SDK各组件之前初始化Context信息
& & & & & & & & SDKInitializer.initialize(getApplicationContext());
& & & & & & & & setContentView(R.layout.activity_main);
& & & & & & & & // 获取组件
& & & & & & & & mMapView = (MapView) findViewById(R.id.bmapView);
& & & & & & & & // 定义 BaiduMap 地图对象的操作方法与接口
& & & & & & & & mBaiduMap = mMapView.getMap();
& & & & & & & & mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
& & & & & & & & // 声明LocationClient类
& & & & & & & & mLocationClient = new LocationClient(getApplicationContext());
& & & & & & & & mLocationClient.registerLocationListener(new MyLocationListener());// 注册监听函数
& & & & & & & & // 设置定位参数
& & & & & & & & LocationClientOption option = new LocationClientOption();
& & & & & & & & option.setOpenGps(true);// 打开GPS
& & & & & & & & option.setCoorType(&bd09ll&);// 返回的定位结果是百度经纬度,默认值gcj02
& & & & & & & & option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
& & & & & & & & option.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式
& & & & & & & & option.setIsNeedAddress(true);// 返回的定位结果包含地址信息
& & & & & & & & option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向
& & & & & & & & mLocationClient.setLocOption(option);
& & & & & & & & mLocationClient.start();// 开始定位
& & & & @Override
& & & & protected void onDestroy() {
& & & & & & & & super.onDestroy();
& & & & & & & & // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
& & & & & & & & mMapView.onDestroy();
& & & & }
& & & & @Override
& & & & protected void onResume() {
& & & & & & & & super.onResume();
& & & & & & & & // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
& & & & & & & & mMapView.onResume();
& & & & }
& & & & @Override
& & & & protected void onPause() {
& & & & & & & & super.onPause();
& & & & & & & & // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
& & & & & & & & mMapView.onPause();
& & & & }
& & & & public class MyLocationListener implements BDLocationListener {
& & & & & & & & @Override
& & & & & & & & // BDLocation类,封装了定位SDK的定位结果,通过该类用户可以获取error code,位置的坐标,精度半径等信息
& & & & & & & & public void onReceiveLocation(BDLocation location) {
& & & & & & & & & & & & Log.e(&!!!!!&, &&&&);//没有输出
& & & & & & & & & & & & if (location == null) {
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
}
复制代码
哦!终于解决了。SDK和文档实在写的太乱了!!受不了。。。
要装新版定位SDK4
注意这一句话:
在application标签中声明service组件,每个app拥有自己单独的定位service
&service android:name=&com.baidu.location.f& android:enabled=&true& android:process=&:remote&&
&/service&
以及它的权限说明
然后其他的SDK不要下载重复了:
,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool
自定义的时候,不要了,不然jar里会重复导致出错。
(ps:自定义SDK 里的定位SDK还是旧版的,不忍吐槽)
就酱。。。
时间被海绵吃了
& & 对照下这里的权限!
请问解决了吗?直接使用官方DEMO也不行吗?
时间被海绵吃了
& &so有没有放到工程中?贴出问题log
请问解决了吗?我也遇到这样的问题了
请问楼主,解决了,我也是同样的问题,拜求:'(
我也遇到同样的问题,start总是不成功
同问!!!这坑爹的东西
官方DEMO可以用,但是把官方demo粘到自己的工程里就不行了,权限设置一样,jar和so也一起粘贴过来了,还不行。
不报任何错误,但是onReceiveLocation就是没有回调。
& & 深有同感,文档和SDK,变化大,又乱,官方的DEMO都不是最新的,尤其定位这块。
我也遇到了相应的问题,按照某一楼层的回答解决了这个问题。不是直接解决的,是我看到这个答案开始怀疑百度的文档权威性,索性不看文档了。
最后解决的办法就是:反正demo是可以运行可以使用的,索性就用demo工程中的.jar和.so文件,把他们拷贝到自己的工程中,然后把代码再复制过去。直接搞定。
我也遇到过了,不报错,而且发起requestLocation()定位时返回0(正常发起定位),我把demo里的.so文件也拷贝过去就解决了。
nexus手机,定位SDK,BDLocationListener没有被调用?
发表于 3&天前
需要设置setMyLocationEnabled(true)
Powered by中产阶级完全装逼指南:用百度地图一步搞定 - Hdt品牌展示 - 企业_新快网
中产阶级完全装逼指南:用百度地图一步搞定
时间: 16:14:05  来源:人民网
  相信不少人与我有相同的体验,作为一枚外企小职员,每天兢兢业业、朝五晚九,没钱没车没房。
  但放眼望去,周围的美女同事上班都是这样的:
  午餐绝对不进公司食堂,吃的都是这样的:
  出去旅游不差钱,酒店住的都是这样的:
  桥豆麻袋,难道我们不是一样的工资吗?为了不被同事排挤,我只能每天跟着她们吃香喝辣,装X技能满点。但是到了月末交房租的时候,我还是只能选择Go die!
  到底哪里出了错?带着满腹的疑惑,我度娘了如下问题:
  然而有的答案却是:
  太惨了!
  直到有一天一位公司同事透露了她的小心机,原来一个新版百度地图就能体验中产阶级应该有的生活!
  大招一:百度地图叫Uber享受私家车体验
  每天早晨,垂死般挣扎着逃离了被窝君封印的我,爆发了体内洪荒之力以迅雷不及掩耳盗铃之势洗漱、化妆、吃早点,再像疯狗般狂奔向小区门口。
  然而此时,要慢慢打开新版百度地图,在&出发&中优雅地选择优步,百度地图会根据LBS自动定位所在位置,只要输入终点就能有自己的私人座驾了。看,距离最近的司机只有2分钟路程。
  关键是,打到豪车的机会不要太多。这个时候一定要停在公司正门口,和Uber司机亲密地道声再见!同事们一定会羡慕嫉妒恨地说,你的土豪男朋友怎么每次都不一样?简直是人间一大享受。
  大招二:百度地图团购中西方美食
  一上午跟领导撕逼(划掉)热情讨论工作后感到心塞塞,到了午休时间,我们精致のGirl是绝对不会踏进食堂半步的,一份装X满分的餐点是必须的。
  再次优雅地打开百度地图,在&发现周边服务&的&生活服务&选择美食,就能在或中式或西式的美食中任意挑选。最近养生,点个日本菜&鲤鱼酒屋&真真是极好的,糯米团购价只要79元呢。
  多亏了百度地图,让我这个见食眼开的吃货荣升为比处女座还挑剔的美食家,动动手指就找到了很多有品质的餐厅,到了餐点享受高档美食,人生简直完美。
  大招三:百度地图低价位订高品质酒店
  如果经常长途旅行、出差,用百度地图订酒店、飞机票也不是难题。真正是居家旅行的必备良品,比男朋友还要贴心!
  出差的时候,我喜欢赠送双餐和带游泳池的酒店,但服务完善的酒店往往巨贵无比。这次深圳出差前,我抱着试试看的心情打开百度地图,在&发现周边服务&的订酒店版块中看到&今日特价&几个字,发现四星级的中南海滨大酒店也只要不到400元,于是果断预定了一个房间。
  有了此等神器,我瞬间翻身农奴把歌唱,生活质量一路飘高。坊间传闻我得到&麒麟才子&相助,殊不知正是百度地图!你看,过中产阶级的生活真的有那么难吗?!
本报新闻今日排行榜
最新图片文章
大道·读图
新快网推荐阅读
   &业务合作QQ
本频道由昆山鸿富通-广东新快报联合运营近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的。我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置。& 经过2天研究和咨询,找到了解决方案,在此备忘一下。&& 注意:定位使用真机才能够真正定位;模拟器的话,在DDMS中的Emulator Control中,选择Manual,下面单选按钮选择Decimal,然后填写经纬度,send后,再点击定位我的位置按钮,就能定位了(这应该算是固定定位,哈哈。。。)、&&&&&&&& 1、第一步当然是获取一个针对自己项目的key值。/wiki/static/imap/key/2、使用百度API是有前提的,摘自百度:首先将API包括的两个文件baidumapapi.jar和 libBMapApiEngine.so拷贝到工程根目录及libs\armeabi目录下,并在工程属性-&Java Build Path-&Libraries中选择&Add JARs&,选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。(这两个文件见附件)。3、按照自己的需求写一个layout,我的如下:&&&& &?&LinearLayout&& & android:orientation="vertical"&& android:layout_width="fill_parent"&& android:layout_height="fill_parent"&& &&&&&& &TextView&&&&& android:id="@+id/myLocation_id"&&&&& android:layout_width="fill_parent"&&&&& android:layout_height="wrap_content"&&&& android:textSize="15dp"&&&& android:gravity="center_horizontal"&&&& android:textColor="@drawable/black"&&&& android:background="@drawable/gary"&&&& /&&&&&&&& &com.baidu.mapapi.MapView android:id="@+id/bmapsView"&&&& android:layout_width="fill_parent" android:layout_height="fill_parent"&&&&& android:clickable="true"& android:layout_weight="1"&&&&&& /&&&&&& &Button&&&&&&& android:layout_width="wrap_content"&&&&&&& android:layout_height="wrap_content"&&&&&&& android:id="@+id/location_button_id"&&&&&&& android:text="@string/location_button_text"&&& /&&&&&&&&/LinearLayout&&需要特别注意的是:&com.baidu.mapapi.MapView& /& 这玩意。4、写一个MapApplication实现application,提供全局的BMapManager,以及其初始化。Java代码public BMapManager mapManager =&static MapA&public String mStrKey = "你申请的key值";&&@Override&public void onCreate() {&&&& mapManager = new BMapManager(this);&&&& mapManager.init(mStrKey, new MyGeneralListener());&}&@Override&//建议在您app的退出之前调用mapadpi的destroy()函数,避免重复初始化带来的时间消耗&public void onTerminate() {&&&& // TODO Auto-generated method stub&&&& if(mapManager != null)&&&& {&&&&&&&& mapManager.destroy();&&&&&&&& mapManager =&&&& }&&&& super.onTerminate();&}&&static class MyGeneralListener implements MKGeneralListener{&&&&& @Override&&&& public void onGetNetworkState(int arg0) {&&&&&&&& Toast.makeText(MapApplication.app.getApplicationContext(), "您的网络出错啦!",&&&&&&&&&&&&&&&& Toast.LENGTH_LONG).show();&&&& }&&&& @Override&&&& public void onGetPermissionState(int iError) {&&&&&&&& if (iError ==& MKEvent.ERROR_PERMISSION_DENIED) {&&&&&&&&&&&& // 授权Key错误:&&&&&&&&&&&& Toast.makeText(MapApplication.app.getApplicationContext(),"您的授权Key不正确!",&&&&&&&&&&&&&&&&&&&& Toast.LENGTH_LONG).show();&&&&&&&& }&&&& }&}&5、接下来就是按照百度api写定位代码了,使用handler机制去添加定位图层,需要说明的都在注释上了。&&&&&&&& private BMapManager mBMapMan =&private MapView mMapView =&private MapController bMapC&private MKLocationManager mkLocationM&private MKSearch mkS&&private TextView address_&& //定位到的位置信息&&private ProgressD&private List&HotelInfo& hotelL&&private int distance = 1000;& //查询的范围(单位:m)&&&& Handler handler = new Handler(){&&&& @Override&&&& public void handleMessage(Message msg) {&&&&&&&&&&&&&&&&& double lat = msg.getData().getDouble("lat");&&&&&&&& double lon = msg.getData().getDouble("lon");&&&&&&&& if(lat!=0&&lon!=0){&&&&&&&&&&&& GeoPoint point = new GeoPoint(&&&&&&&&&&&&&&&&&&&& (int) (lat * 1E6),&&&&&&&&&&&&&&&&&&&& (int) (lon * 1E6));&&&&&&&&&&&& bMapController.animateTo(point);& //设置地图中心点&&&&&&&&&&&& bMapController.setZoom(15);&&&&&&&&&&&&&&&&&&&&&&&&& mkSearch.reverseGeocode(point);&& //解析地址(异步方法)&&&&&&&&&&&&&&&&&&&&&&&&& MyLocationOverlay myLoc = new MyLocationOverlayFromMap(ShowMapAct.this,mMapView);&&&&&&&&&&&& myLoc.enableMyLocation();&& // 启用定位&&&&&&&&&&&& myLoc.enableCompass();&&&&& // 启用指南针&&&&&&&&&&&& mMapView.getOverlays().add(myLoc);&&&&&&&& }else{&&&&&&&&&&&& Toast.makeText(ShowMapAct.this, "没有加载到您的位置", Toast.LENGTH_LONG).show();&&&&&&&& }&&&&&&&&&&&&&&&&& if(hotelList!=null){&&&&&&&&&&&& Drawable marker = getResources().getDrawable(R.drawable.iconmarka);& //设置marker&&&&&&&&&&&& marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());&& //为maker定义位置和边界&&&&&&&&&&&& mMapView.getOverlays().add(new OverItemList(marker,hotelList,ShowMapAct.this,bMapController));&&&&&&&& }else if(hotelList==null&&lat!=0&&lon!=0){&&&&&&&&&&&& Toast.makeText(ShowMapAct.this, "网络异常,没有获取到酒店信息。", Toast.LENGTH_LONG).show();&&&&&&&& }&&&&&&&& if(dialog!=null)& dialog.dismiss();&&&& }&& };&&@Override&protected void onCreate(Bundle savedInstanceState) {&&&&&&&&& distance = getIntent().getExtras().getInt("distance");&& //获取查询范围&&&&&&&&& super.onCreate(savedInstanceState);&&&& setContentView(R.layout.location);&&&&&&&&& mMapView = (MapView)findViewById(R.id.bmapsView);&& //初始化一个mapView& 存放Map&&&& init();& //初始化地图管理器&&&& super.initMapActivity(mBMapMan);&&&&&&&&&&&&&& address_view = (TextView)findViewById(R.id.myLocation_id);&&&& SpannableStringBuilder style = new SpannableStringBuilder(String.format(getResources().getString(R.string.location_text),"位置不详"));&&&& style.setSpan(new ForegroundColorSpan(Color.RED), 5, style.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);&&&& address_view.setText(style);&&&&&&&&& Button location_button = (Button)findViewById(R.id.location_button_id);&&&& location_button.setOnClickListener(new View.OnClickListener(){&&&&&&&& @Override&&&&&&&& public void onClick(View v) {&&&&&&&&&&&&& dialog = ProgressDialog.show(ShowMapAct.this, "", "数据加载中,请稍后.....");&&&&&&&&&&&&& new Thread(new MyThread()).start();&&&&&&&& }&&&& });&&&&&&&&& mkSearch = new MKSearch();&& //初始化一个MKSearch,根据location解析详细地址&&&& mkSearch.init(mBMapMan, this);&&&&&&& mMapView.setBuiltInZoomControls(true);&& //启用内置的缩放控件&&&&&&& bMapController = mMapView.getController();&&&&&&& GeoPoint defaultPoint = new GeoPoint((int) (39.920934 * 1E6),(int) (116.412817 * 1E6));& //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)&&&&&&& bMapController.setCenter(defaultPoint);& //设置地图中心点&&&&&&& bMapController.setZoom(12);& //设置地图zoom级别&&&&&&&&&&&&&&& mkLocationManager = mBMapMan.getLocationManager();&}&/*** 初始化地图管理器BMapManager*/&public void init(){&&&& MapApplication app = (MapApplication)getApplication();&&&&&&& if (app.mapManager == null) {&&&&&&&& app.mapManager = new BMapManager(getApplication());&&&&&&&& app.mapManager.init(app.mStrKey, new MapApplication.MyGeneralListener());&&&&&&& }&&&&&&& mBMapMan = app.mapM&}&&@Override&protected void onDestroy() {&&&& MapApplication app = (MapApplication)getApplication();&&&& if (mBMapMan != null) {&&&&&&&& mBMapMan.destroy();&&&&&&&& app.mapManager.destroy();&&&&&&&& app.mapManager =&&&&&&&& mBMapMan =&&&& }&&&& super.onDestroy();&}&&&&&& @Override&&&&& protected void onPause() {&&&&&&&&& if (mBMapMan != null) {&&&&&&&&&&&&& // 终止百度地图API& &&&&&&&& mBMapMan.stop();&&&&&&&&& }&&&&&&&&& super.onPause();&&&&& }&&&&& @Override&&&&& protected void onResume() {&&&&&&& if (mBMapMan != null) {&&&&&&&&&&&&& // 开启百度地图API& &&&&&&&& mBMapMan.start();&&&&&&&&& }&&&&&&&&& super.onResume();&&&&& }&&@Override&protected boolean isRouteDisplayed() {&&&&&}&&@Override&public void onGetAddrResult(MKAddrInfo result, int iError) {&&&& if(result==null)&&&& SpannableStringBuilder style = new SpannableStringBuilder(String.format(getResources().getString(R.string.location_text),result.strAddr));&&&& style.setSpan(new ForegroundColorSpan(Color.RED), 5, style.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);&&&& address_view.setText(style);&&&& if(dialog!=null) dialog.dismiss();&}&&@Override&public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {}&@Override&public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {}&@Override&public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}&@Override&public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {}&&/*** 重新定位,加载数据* @author Administrator**/&class MyThread implements Runnable{&&&& @Override&&&& public void run() {&&&&&&&& /**&&&&&&&&& * 最重要的就是这个玩意&&&&&&&&& * 由于LocationListener获取第一个位置修正的时间会很长,为了避免用户等待,&&&&&&&&& * 在LocationListener获取第一个更精确的位置之前,应当使用getLocationInfo() 获取一个缓存的位置&&&&&&&&& */&&&&&&&& Location location = mkLocationManager.getLocationInfo();&&&&&&&& double lat = 0d,lon = 0d;&&&&&&&& if(location!=null){&& //定位到位置&&&&&&&&&&&& String coordinate = location.getLatitude()+","+location.getLongitude();&&&&&&&&&&&& HotelRemoteData hotelData = new HotelRemoteData();&&&&&&&&&&&& /**&&&&&&&&&&&& * 远程获取酒店列表数据&&&&&&&&&&&& */&&&&&&&&&&&& hotelList = hotelData.getHotelToMap(coordinate,distance);&&&&&&&&&&&& lat = location.getLatitude();&&&&&&&&&&&& lon = location.getLongitude();&&&&&&&& }&&&&&&&&&&&&&&&&& Message msg = new Message();&&&&&&&& Bundle data = new Bundle();&&&&&&&& data.putDouble("lat", lat);&&&&&&&& data.putDouble("lon", lon);&&&&&&&& msg.setData(data);&&&&&&&& handler.sendMessage(msg);&&&& }&}&& 6、还有一种就是百度示例相当推荐的,也是加载定位位置速度比较快的,那就是通过定位监听器来定位信息。没啥难的,照着百度的示例写,都能搞定。Java代码LocationListener listener = new LocationListener() {&&&& @Override&&&& /** 位置变化,百度地图即会调用该方法去获取位置信息。&&&&& * (我测试发现就算手机不动,它也会偶尔重新去加载位置;只要你通过重力感应,他就一定会重新加载)&&&&& */&&&& public void onLocationChanged(Location location) {&&&&&& GeoPoint gp =& new GeoPoint((int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6));&& //通过地图上的经纬度转换为地图上的坐标点&&&&&& bMapController.animateTo(gp);& //动画般的移动到定位的位置&&&& }&}; &&

我要回帖

更多关于 百度地图定位系统 的文章

 

随机推荐