为了账号安全,请及时绑定邮箱和手机立即绑定

我居然定位到了几内亚湾

package leo.wuhantong;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

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.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.model.LatLng;

/**
 * 地图导航页
 */
public class MapActivity extends AppCompatActivity {

    //定义控件
    private MapView mapView;
    private BaiduMap baiduMap;

    //定位的
    private LocationClient client;
    private LocationListener locationListener;

    //
    private boolean isFristIn = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_map);

        //初始化控件
        initView();
        //事件监听器
        initEvent();
    }

    private void initEvent() {
        client = new LocationClient(this);
        locationListener = new LocationListener();
        client.registerLocationListener(locationListener);

        //设置location的一些必要配置

        LocationClientOption option = new LocationClientOption();
        //坐标类型
        option.setCoorType("bd09ll");
        //
        option.setIsNeedAddress(true);
        //返回当前位置
        option.setOpenGps(true);
        //请求间隔时间 1秒
        option.setScanSpan(1000);
    }

    private void initView() {
        mapView = (MapView) findViewById(R.id.baidu_mapview);
        baiduMap = mapView.getMap();
        MapStatusUpdate factory = MapStatusUpdateFactory.zoomBy(15.0f);
        baiduMap.setMapStatus(factory);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mapView.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mapView.onResume();
    }

    private class LocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
/**
 * MyLocationData data = new MyLocationData.Builder()//
 .direction(mCurrentX)//
 .accuracy(location.getRadius())//
 .latitude(location.getLatitude())//
 .longitude(location.getLongitude())//
 .build();
 mBaiduMap.setMyLocationData(data);
 */
            MyLocationData data = new MyLocationData.Builder()//
                    .accuracy(bdLocation.getRadius())//方向
                    .latitude(bdLocation.getLatitude())//精度
                    .longitude(bdLocation.getLongitude())//
                    .build();

            baiduMap.setMyLocationData(data);
//            MyLocationConfiguration config=new MyLocationConfiguration(MyLocationConfiguration.LocationMode.COMPASS);

            if (isFristIn) {

                LatLng latLng = new LatLng(bdLocation.getLatitude(),
                        bdLocation.getLongitude());
                MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
                baiduMap.animateMapStatus(msu);
                isFristIn = false;
            }
        }
    }


    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mapView.onPause();
    }

    @Override
    protected void onStart() {
        super.onStart();
        //开启定位的允许
        baiduMap.setMyLocationEnabled(true);
        client.start();
    }

    @Override
    protected void onStop() {
        super.onStop();
        //关闭定位功能
        baiduMap.setMyLocationEnabled(false);
        client.stop();
    }

    /**
     * Toast
     *
     * @param str 吐司的文本
     */
    public void toast(String str) {
        Toast.makeText(MapActivity.this, str, Toast.LENGTH_SHORT).show();
    }

    /**
     * Log
     *
     * @param log Log的文本
     */
    public void log(String log) {
        Log.i("TAG", log);
    }
}

开始我还以为我的哪里错了,后来想想感觉不大可能,然后我把地图缩小了n倍,发现我已经到了几内亚湾,求助,代码贴上

正在回答

8 回答

手机软件权限管理,你手机应该是设定了,不明来源的软件不开启定位这个功能,我现在就是这样子,去设置改了权限之后,妥妥的

0 回复 有任何疑惑可以回复我~

有没有是AVD下模拟的  包都加进去了 还是几内亚

1 回复 有任何疑惑可以回复我~

你好我也出现过几内亚湾,我解决的方法是:应用的权限问题,某一次我没有接受权限,最后我去设置里把这个应用所有权限打开就好了,测试机华为手机。

2 回复 有任何疑惑可以回复我~
#1

慕神6627383

非常感谢
2018-09-14 回复 有任何疑惑可以回复我~

包都在呢。。还是不合适呀

0 回复 有任何疑惑可以回复我~
#1

Phoenix_C 提问者

jni少了吧 和Demo对比着看
2016-11-13 回复 有任何疑惑可以回复我~

楼主,少了哪个包啊??说一下呗

0 回复 有任何疑惑可以回复我~
#1

Phoenix_C 提问者

liblocSDK 然后啥啥啥的 不记得了
2016-05-15 回复 有任何疑惑可以回复我~
#2

风筝3279816 回复 Phoenix_C 提问者

什么jar包少了?locSDK?
2016-06-29 回复 有任何疑惑可以回复我~
#3

Phoenix_C 提问者 回复 风筝3279816

对应的还有so文件,我的是缺少这个
2016-07-07 回复 有任何疑惑可以回复我~

请问有人解决这个问题了吗?

0 回复 有任何疑惑可以回复我~
#1

Phoenix_C 提问者

去查看官方的demo有个jar包少了
2016-05-11 回复 有任何疑惑可以回复我~

同在几内亚湾,换了机子与代码也不行,烦

0 回复 有任何疑惑可以回复我~
#1

Phoenix_C 提问者

去查看官方的demo有个jar包少了
2016-05-11 回复 有任何疑惑可以回复我~

小米4遇到里同样的问题,改用htc测试正常。还不知道怎么解决

0 回复 有任何疑惑可以回复我~
#1

Phoenix_C 提问者

我后来看了官方的demo,发现少了个jar包,下的jar包的没有,考过来就好了
2016-05-11 回复 有任何疑惑可以回复我~
#2

qq_壞壞微笑_0 回复 Phoenix_C 提问者

liblocSDK6a.so是这个包吗?可是我有这个包,还是定位在几内亚湾啊?
2016-08-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
百度地图在Android中的使用
  • 参与学习       38541    人
  • 解答问题       275    个

在Android应用中玩转百度地图,由浅入深的带领大家一步步学习

进入课程

我居然定位到了几内亚湾

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信