chvfily 2019-04-12 23:10 采纳率: 50%
浏览 302

百度地图 无法显示定位内容?

根据百度地图api走:可是无法显示当前定位内容:
图片说明

附上相关代码:

相关权限
图片说明

//MainActivity

public class MainActivity extends AppCompatActivity {
private MapView mMapView=null;
private BaiduMap mBaiduMap=null;
private LocationClient mLocationClient=null;
private boolean isFirstLoc=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView=findViewById(R.id.bmapView);
mBaiduMap=mMapView.getMap();//获取地图层
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//设置为普通模式

    //定位模块
    mBaiduMap.setMyLocationEnabled(true);//打开定位模式

    //定位初始化
    mLocationClient = new LocationClient(getApplicationContext());

  //通过LocationClientOption设置LocationClient相关参数
    LocationClientOption option = new LocationClientOption();
    option.setOpenGps(true); // 打开gps
    option.setIsNeedAddress(true);
    option.setCoorType("bd09ll"); // 设置坐标类型
    option.setScanSpan(1000);

    //设置locationClientOption
    mLocationClient.setLocOption(option);

    //注册LocationListener监听器
    MyLocationListener myLocationListener = new MyLocationListener();
    mLocationClient.registerLocationListener(myLocationListener);
    //开启地图定位图层
    mLocationClient.start();

}

public class MyLocationListener extends BDAbstractLocationListener {
    @Override
    public void onReceiveLocation(BDLocation location) {
        //mapView 销毁后不在处理新接收的位置
        if (location == null || mMapView == null){
            return;
        }
        MyLocationData locData = new MyLocationData.Builder()
                .accuracy(location.getRadius())
                // 此处设置开发者获取到的方向信息,顺时针0-360
                .direction(location.getDirection())
                .latitude(location.getLatitude())
                .longitude(location.getLongitude())
                .build();

        mBaiduMap.setMyLocationData(locData);

// if (isFirstLoc)
// {
// isFirstLoc = false;
// LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
// MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
// mBaiduMap.animateMapStatus(u);
// }
// Toast.makeText(MainActivity.this, "当前的位置:"+location.getCity(), Toast.LENGTH_SHORT).show();
}
}

@Override
protected void onResume() {
    super.onResume();
    //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
    mMapView.onResume();
}
@Override
protected void onPause() {
    super.onPause();
    //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
    mMapView.onPause();
}
@Override
protected void onDestroy() {
    mLocationClient.stop();
    mBaiduMap.setMyLocationEnabled(false);
    mMapView.onDestroy();
    mMapView = null;
    super.onDestroy();

}

//DemoApplication
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(getApplicationContext());
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 21:37
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    从您的描述来看,您似乎遇到了一个Android应用中的问题,它无法正常显示Google Maps中的定位功能。这可能与一些系统或应用程序级别的配置有关。以下是一些建议步骤来解决这个问题:

    1. 检查权限请求是否正确

    首先,请确保在AndroidManifest.xml文件中正确地设置了权限。例如,您提到的ACCESS_FINE_LOCATION权限应该添加到以下位置:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    

    如果您没有这样做,那么在运行时可能会遇到权限问题。

    2. 验证是否有网络连接

    如果用户在网络不佳的情况下尝试定位服务,他们可能会收到错误消息。请检查设备上的网络连接状态,并确保有可用的网络连接。

    3. 确认API Key是否正确

    要使用Google Maps API,您需要提供一个有效的API密钥。如果您已经获取了API密钥,请确认其有效性和更新到最新版本以获得最新的API密钥。

    4. 更新地图客户端

    尝试卸载并重新安装Google Maps Android客户端。有时,旧版本的地图客户端会包含不兼容的配置项,导致某些功能不能正常使用。

    5. 使用模拟器进行测试

    由于您提供的代码片段主要涉及的是Android Studio,您可以考虑创建一个简单的模拟器环境来进行测试。这样可以避免直接在真实设备上进行操作,从而减少潜在的问题。

    6. 调整布局或样式

    如果上述措施都不能解决问题,可能需要查看Google Maps Android客户端的源码,或者联系Google Maps团队寻求帮助,因为定位功能的具体实现细节可能会有所不同。

    希望这些建议能帮助您解决问题!如果仍然存在问题,您可能需要提供更多关于您的项目、错误信息以及任何已尝试过的解决方案的信息。

    评论

报告相同问题?