android开发 高德地图自定义地图应用【最新】

在app上调入高德地图SDK,想把地图样式改为自定义的样式。开发手册介绍得不太清楚,这里把详细步骤写一下:

要点

  1. 地图文件放在虚拟机路径
  2. 相关权限打开

(1)下载高德地图SDK并安装,接口配置,网上有很多介绍。这里不再详述。
(2)自定义地图创建地图样式
(3)发布与使用
在这里插入图片描述
创建好地图样式后,首先需要发布,然后点击使用与分享。选择Android,我这里下载的最新的SDK是7.0.0以后版本
在这里插入图片描述
(4)【重点】Android中应用
下载完成解压后会得到两个.data文件,开发文档里这样说
在这里插入图片描述
这里的路径指的是虚拟机里的路径! 不是本地电脑上的!!
我用的是雷电模拟器,打开文件管理器,直接拖入两个.data文件,不知道为什么会自动放在在这里插入图片描述
路径下。我就懒得改了。

回到Android studio,在相应.java文件加入

        //地图样式
        aMap.setCustomMapStyle(
                new com.amap.api.maps.model.CustomMapStyleOptions()
                        .setEnable(true)
                        .setStyleDataPath("/storage/emulated/0/Pictures/style.data")
                        .setStyleExtraPath("/storage/emulated/0/Pictures/style_extra.data")
        );

重新运行应用,然后可能发现地图样式还是默认样式,没有变化!
在这里插入图片描述

要打开软件读取存储权限!!()主界面下长按应用图标,可进入权限设置
最后重新运行应用~成功啦!
在这里插入图片描述
完整代码见下

public class TrailFragment extends Fragment{
    
    
    private MapView mMapView = null;
    private AMap aMap = null;

    public TrailFragment() {
    
    
        // Required empty public constructor
    }
    

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
    

        View view = inflater.inflate(R.layout.fragment_trail, container, false);
        //获取地图空间引用
        mMapView = (MapView) view.findViewById(R.id.map);
        // 在acitivity执行OnCreate时执行mMapView.onCreate(savedInstanceState);
        mMapView.onCreate(savedInstanceState);// 此方法必须重写
        
        if (aMap == null) {
    
    
            aMap = mMapView.getMap();
        }
        
        aMap.setCustomMapStyle(
                new com.amap.api.maps.model.CustomMapStyleOptions()
                        .setEnable(true)
                        .setStyleDataPath("/storage/emulated/0/Pictures/style.data")
                        .setStyleExtraPath("/storage/emulated/0/Pictures/style_extra.data")
        );
         return view;
}

    @Override
    public void onDestroy() {
    
    
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        mMapView.onDestroy();
    }

    @Override
    public void onResume() {
    
    
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        mMapView.onResume();
    }

    @Override
    public void onPause() {
    
    
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        mMapView.onPause();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
    
    
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        mMapView.onSaveInstanceState(outState);
        }

猜你喜欢

转载自blog.csdn.net/weixin_43846562/article/details/112299444