2 xiaoluxiaohong xiaoluxiaohong 于 2014.08.26 11:11 提问

百度定位问题 高手看一下,这样写打不开

package com.example.baidumaphz;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
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.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.Overlay;
import com.example.baidumaphz.LocationApplication.MyLocationListener;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {
MapView mMapView = null;
BaiduMap mBaiduMap = null;
LocationClient mLocationClient = new LocationClient(getApplicationContext());
BDLocation location = null;

private String tempcoor = "gcj02";
public MyLocationListener mMyLocationListener = new MyLocationListener();
public TextView mLocationResult;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SDKInitializer.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    mMapView = (MapView) findViewById(R.id.bmapsView);
    mBaiduMap = mMapView.getMap();

    // 定位初始化
    mLocationClient = new LocationClient(this);
    LocationClientOption option = new LocationClientOption();
    option.setOpenGps(true);// 打开gps
    option.setCoorType("tempcoor");// 返回的定位结果是百度经纬度,默认值gcj02
    option.setScanSpan(1000);
    mLocationClient.setLocOption(option);
    mLocationClient.start();
    if (!mLocationClient.isStarted()) {
        mLocationClient.start();
        mLocationClient.requestLocation();
    } else {
        mLocationClient.requestLocation();
    }

    // 开启定位图层
    mBaiduMap.setMyLocationEnabled(true);
    // 构造定位数据
    MyLocationData locData = new MyLocationData.Builder()
            .accuracy(location.getRadius())
            // 此处设置开发者获取到的方向信息,顺时针0-360
            .direction(100).latitude(location.getLatitude())
            .longitude(location.getLongitude()).build();
    // 设置定位数据
    mBaiduMap.setMyLocationData(locData);
    // 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标)
    BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
            .fromResource(R.drawable.icon_st);
    MyLocationConfiguration config = new MyLocationConfiguration(null,
            true, mCurrentMarker);
    mBaiduMap.setMyLocationConfigeration(config);
    // 当不需要定位图层时关闭定位图层
    mBaiduMap.setMyLocationEnabled(false);
}

public class MyLocationListener implements BDLocationListener {

    @Override
    public void onReceiveLocation(BDLocation location) {
        // Receive Location
        StringBuffer sb = new StringBuffer(256);
        sb.append("time : ");
        sb.append(location.getTime());
        sb.append("\nerror code : ");
        sb.append(location.getLocType());
        sb.append("\nlatitude : ");
        sb.append(location.getLatitude());
        sb.append("\nlontitude : ");
        sb.append(location.getLongitude());
        sb.append("\nradius : ");
        sb.append(location.getRadius());
        if (location.getLocType() == BDLocation.TypeGpsLocation) {
            sb.append("\nspeed : ");
            sb.append(location.getSpeed());
            sb.append("\nsatellite : ");
            sb.append(location.getSatelliteNumber());
            sb.append("\ndirection : ");
            sb.append("\naddr : ");
            sb.append(location.getAddrStr());
            sb.append(location.getDirection());
        } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
            sb.append("\naddr : ");
            sb.append(location.getAddrStr());
            // 运营商信息
            sb.append("\noperationers : ");
            sb.append(location.getOperators());
        }
        logMsg(sb.toString());
        Log.i("BaiduLocationApiDem", sb.toString());
    }

    private void logMsg(String str) {
        // TODO Auto-generated method stub
        try {
            if (mLocationResult != null)
                mLocationResult.setText(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

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

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

@Override
protected void onDestroy() {
    // 退出时销毁定位
    if (mLocationClient != null)
        mLocationClient.stop();
    mMapView.onDestroy();
    super.onDestroy();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onRestoreInstanceState(savedInstanceState);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    return super.onCreateOptionsMenu(menu);
}

}

6个回答

sinat_24463043
sinat_24463043   2015.04.07 16:11

.xml呢?有没有增加权限

ljq49
ljq49   2015.06.24 16:08

xml文件是否加了如下服务申明
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >

ljq49
ljq49   2015.06.24 16:09

xml文件是否加了如下服务申明
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >

u013370255
u013370255   2015.08.19 16:04

是不是会崩溃啊?是不是location为null的原因啊?我把下面的代码放到onReceiveLocation(BDLocation location)里面就好啦
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
// 设置定位数据
mBaiduMap.setMyLocationData(locData);
// 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标)
BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
.fromResource(R.drawable.icon_st);
MyLocationConfiguration config = new MyLocationConfiguration(null,
true, mCurrentMarker);
mBaiduMap.setMyLocationConfigeration(config);

    还有下面这句,我放在了onDestroy()里
    // 当不需要定位图层时关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
baidu_27536529
baidu_27536529   2015.11.14 15:04

请问你解决了么?我现在也是这个问题

hbyclhy
hbyclhy   2016.04.13 17:31

LocationClient(getApplicationContext()); 这句话错了,应该是LocationClient(this);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
李冰冰:英文是这样炼成的
跟李冰冰是认识很久的非常好的朋友,似乎每一次见面之前都觉得太了解了,没什么新鲜的话题了。但是,每一次都聊得非常开心,因为每一次我都可以看到她的进步。永远都在努力向前,如此评价李冰冰一点不为过。这次跟冰冰聊天,我又受益很多。面对这个眼神坚定的东北女孩,会情不自禁地反思自己,不免自惭形秽。对话中,她跟我说起她的很多座右铭,这些不仅可以鞭策她自己,也足以激励很多人。虽然,她自谦是只“笨鸟”,但其实她
"如何成为有效学习的高手" 学习笔记
<<如何成为有效学习的高手>> 学习笔记 前言 高效学习的定义是找到适合自己的学习方法,在最短的时间里能够集中注意力,以解决生活或工作中的一个任务为目的着手学习. 需要勤加练习,必要的时候要向名师求助! 这其中有七个关键点: 1. 适合自己 2. 学习方法 3. 最短时间 4. 注意力 5. 解决任务 6. 设定目标 7. 名师 1.找到适合自...
百度定位问题
感觉配置跟百度demo一模一样,自己写的demo也可以定位,但是放到项目里面就不行!
百度自媒体平台-知道日报作者申请
申请过百度百家,百家号,百度发布,百度媒体平台,这又是百度一个新的文章发布平台。之前这几个不管是流量还是活跃度都不怎么样,不知道到底怎么样。先申请试下吧。这里是全球最大的中文问答平台和知识分享社区,有广大网友深感兴趣的泛生活领域问题,涉及生活、互联网、健康、环境、体育、科学等几十个分类。知道日报已经与百余家专业机构进行合作,覆盖政府单位、媒体杂志、知名机构...
Delphi 名站以及高手Blog
http://cnblogs.com/del (万一兄的,这个不用解释了) http://www.cnblogs.com/del/archive/2010/04/25/1720750.html  万一的博客总目录(2007.11.12 - 2010.4.25) http://cnblogs.com/dxsoft (不得闲,很多原创,但现在不怎么更新了) http://blog.c
Elasticsearch顶尖高手系列课程-核心知识篇+高手进阶篇(免费无加密)
附件百度云地址,无加密,核心知识篇+高手进阶篇(完整版)
Elasticsearch顶尖高手系列课程-核心知识篇+高手进阶篇——百度云视频分享链接
Elasticsearch顶尖高手系列课程-核心知识篇+高手进阶篇——百度云视频分享链接
单片机高手之路(网上看到的一篇很好的的学习博文)
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么.当你自己想 出来  再参考别人的提示,你就知道自己和别人思路的差异.  2.别小家子气,买本书几十块都舍不得,你还学个P.为了省钱看电子书,浪费的时间绝对  超过书的价值.当然如果查资料,只能看PDF.  3.学习新的开发软件时,一定要看帮助手册.买的书不够全面.刚接触一个软件,什么都不  懂,就盲目的问东问西,让
百度定位开发
android开发中的定位问题,同过引入百度第三方api实现百度定位
Chrome打不开baidu首页的问题
方法:chrome的地址栏输入:chrome://net-internals/#hsts , 在Delete domain 栏的输入框中输入要http访问的域名,然后点击“delete”按钮,即可完成配置。