【安卓学习之常见问题】百度sdk不显示地图:此区域无卫星星图

█ 【安卓学习之常见问题】百度sdk不显示地图:此区域无卫星星图


█ 系列文章目录

提示:这里是收集了无人机的相关文章


█ 文章目录


█ 读前说明

  • 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
  • 本文只简单罗列相关的代码实现过程
  • 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已

█ 问题描述:

本来地图可以显示的,然后在地图上面随便添加位置后,地图没显示出来,代码也没有问题:

在这里插入图片描述


█ 初步原因分析:

1. 刚开始因为是硬件问题,比如手机的定位问题,将app重装就不会,因此可以排除

2. 通过代码删减法,可以发现是以下方法导致无法显示:

    float DEFAULT_LATITUDE = 37.8575523f;
    float DEFAULT_LONGITUDE = -122.292767f;
    int DEFAULT_BEARING = 0;
    int DEFAULT_TILT = 0;
    int DEFAULT_ZOOM_LEVEL = 17;
    @Override
    public void loadCameraPosition() {
        final BaiduMap map = getBaiduMap();
		if (map == null) return;

		final SharedPreferences settings = mAppPrefs.prefs;
		final MapStatus.Builder camera = new MapStatus.Builder();

		camera.rotate(settings.getFloat(PREF_BEA, DEFAULT_BEARING));
		camera.overlook(settings.getFloat(PREF_TILT, DEFAULT_TILT));
		camera.zoom(settings.getFloat(PREF_ZOOM, DEFAULT_ZOOM_LEVEL));
		camera.target(new LatLng(settings.getFloat(PREF_LAT, DEFAULT_LATITUDE),
                settings.getFloat(PREF_LNG, DEFAULT_LONGITUDE)));// 重点是这句

		map.setMapStatus(MapStatusUpdateFactory.newMapStatus(camera.build()));
    }

3.坐标比较

提示:【显示异常】是指地图展示【此区域无卫星星图】

纬度latitude经度longitude结果
37.8575523122.292767显示正常
46.10719-26.88701显示异常
46.10719-10显示异常
46.10719-5显示异常
46.10719-2显示异常
46.10719-1.8显示异常
46.10719-1.7显示正常
46.10719-1.5显示正常
46.10719-1显示正常

4.查看LatLng.java

提示:坐标都是进行加密,不是真实坐标,因加密方式不同,分为以下几种坐标:
WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块)
GCJ-02:中国坐标/国测局偏移标准,谷歌地图、高德地图、腾讯地图使用
BD-09:百度坐标偏移标准,百度地图使用

public final class LatLng implements Parcelable {
    private static final String a = LatLng.class.getSimpleName();
    public final double latitude;
    public final double longitude;
    public final double latitudeE6;
    public final double longitudeE6;
    public static final Creator<LatLng> CREATOR = new a();

    public LatLng(double var1, double var3) {
        double var5 = var1 * 1000000.0D;
        double var7 = var3 * 1000000.0D;
        this.latitudeE6 = var5;
        this.longitudeE6 = var7;
        this.latitude = var5 / 1000000.0D;
        this.longitude = var7 / 1000000.0D;
    }
    。。。。。。
}

5.再看下float和double

float的范围为-2^128 ~ +2^128(-3.40E+38 ~ +3.40E+38)
double的范围为-2^1024 ~ +2^1024(-1.79E+308 ~ +1.79E+308)

错误的以为:经度longitude < -1.79,超过double的精度,所以就显示异常

在这里插入图片描述

█ 进一步分析:

1. 通过坐标找地图位置

提示:46.10719 | -26.88701 这个坐标是存在的,并非非法坐标
在这里插入图片描述

在这里插入图片描述

2. app上面缩小地图看看

提示:是坐标放大过度,导致显示不了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 换个地址放大地图看看,比如北京-天安门

在这里插入图片描述

4. 换个地址放大地图看看,发现公路可以看到,但是大海通常就显示不了

在这里插入图片描述

█ 解决方案:

这个不是地图问题,也不是坐标问题

█ 相关资料

提示:这里是参考的相关文章

  1. 拾取坐标系统 - 百度地图
  2. float和double取值范围_sinat_39370511的博客-CSDN博客_double取值范围
  3. Android Fragment 加载地图 | 百度地图API SDK
  4. GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)_qq_39714792的博客-CSDN博客

提示:转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/113613283

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值