百度地图

这篇博客详细介绍了如何注册并创建一个百度地图应用,包括获取SHA1,填写应用信息,设置Android SDK,以及在清单文件中添加权限和更改内容。同时,提供了所需的导入包、代码示例和解决常见问题的提示,如定位和缩放bug,以及隐藏百度地图Logo的方法。
摘要由CSDN通过智能技术生成

使用获取SHA1

然后去百度搜

然后注册,注意密码大小写都要有!!!

然后点击控制台

然后点击创建应用


应用名称随便写,应用类型选择Android SDK,包名是你创建的demo名,在清单文件中可以找到再把已经用它

获得的SHA1输入进去(他获得的是所有的,点击复制后现在一个空的text文件中粘贴,只要SHA1就可以了,千万别弄错了,不然出不来,key值不对)

最后点击提交

就会跳到这个页面


然后在清单文件中添加(我第一次就弄错了,第二次才弄好,就是key值不对)

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="Mya3ucDDwmLBPfUg9jV8E680uYgZv6Gu" />

下面是需要导入的包


然后开始写代码


主页面

package com.example.lx_baiduditu;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ZoomControls;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.UiSettings;
import com.baidu.mapapi.model.LatLng;
import com.example.lx_baiduditu.R;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //主要是用Map对象来改变坐标用的.清华大学坐标,创建LatLng(40.009424, 116.332556);
    LatLng xh=new LatLng(31.832944,117.191521);
    //北京大学坐标.   (39.997743, 116.316176);
    LatLng HC=new LatLng(31.891637,117.324073);
    //天安门坐标     (39.915112, 116.403963)

    private MapView mapView_mv;

    private BaiduMap baiduMap;

    private Button zoomOut_bt;
    private Button zoomIn_bt;
    private Button setCompassEnabled_bt;
    private Button rotate_bt;
    private Button overlook_bt;
    private Button newLatLng_bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        setContentView(R.layout.activity_main);
        //控件初始化
        initView();
        //运行后自动隐藏百度的logo
        View child = mapView_mv.getChildAt(1);
        if (child != null && (child instanceof ImageView || child instanceof ZoomControls)){
            child.setVisibility(View.INVISIBLE);
        }

        //1.0,使用MapVIew对象,控制是否显示MapVIew上面的按钮
        //设置不显示缩放控件    该方法的参数是boolen,false是不显示缩放控件
        mapView_mv.showScaleControl(false);
        //设置不显示比例尺控件    该方法的参数是boolen,false是不显示比例尺控件
        mapView_mv.showZoomControls(false);

        //2.获取获取最小(3)、最大缩放级别(21)
        //获取最小的级别,map对象.getMinZoomLevel();
        float minZoomLevel = baiduMap.getMinZoomLevel();
        System.out.println("地图最小的级别minZoomLevel:  "+minZoomLevel);
        //获取最大的级别,map对象.getMaxZoomLevel();
        float maxZoomLevel = baiduMap.getMaxZoomLevel();
        System.out.println("地图最大的级别maxZoomLevel:  "+maxZoomLevel);

        //3.进入地图,默认的中心点是天安门,改变地图中心点为新华大学.
        //使用MapStatusUpdateFactory工厂调用newLatLng方法,参数还是一个LatLng对象(其参数,先是维度,后是经度)
        MapStatusUpdate newLatLng = MapStatusUpdateFactory.newLatLng(xh);
        //BaiduMap对象调用setMapStatus方法往里面穿参数MapStatusUpdate对象.
        baiduMap.setMapStatus(newLatLng);

        //4.设置地图缩放为15,使用MapStatusUpdateFactory工厂调用zoomTo,得到MapStatusUpdate对象.
        MapStatusUpdate zoomTo = MapStatusUpdateFactory.zoomTo(15);
        //BaiduMap对象调用setMapStatus方法往里面穿参数(MapStatusUpdate)对象.
        baiduMap.setMapStatus(zoomTo);

    }

    /*
     * 5.通过点击事件,更新地图状态(就是让地图,放大缩小,旋转,俯仰,移动,隐藏指南针)
     * @param
     */
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.zoomOut_bt:
                //缩小,使用MapStatusUpdateFactory工厂调用zoomOut方法,得到MapStatusUpdate
                MapStatusUpdate zoomOut = MapStatusUpdateFactory.zoomOut();
                //在用map对象.setMapStatus,把MapStatusUpdate对象传入.
                baiduMap.setMapStatus(zoomOut);
                break;
            case R.id.zoomIn_bt:
                //放大,使用MapStatusUpdateFactory工厂调用zoomIn,得到MapStatusUpdate
                MapStatusUpdate zoomIn = MapStatusUpdateFactory.zoomIn();
                //在用map对象.setMapStatus,把MapStatusUpdate对象传入.
                baiduMap.setMapStatus(zoomIn);
                break;
            case R.id.rotate_bt:
                //旋转(0 ~ 360),每次在原来的基础上再旋转30度
                // 获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus
                MapStatus mapStatus = baiduMap.getMapStatus();
                //然后MapStatus.rotate就可以拿到原来的旋转度数.
                float rotate = mapStatus.rotate;


                //通过new MapStatus.Builder得到MapStatus.Builder对象
                MapStatus.Builder builder = new MapStatus.Builder();
                //用MapStatus.Builder对象.rotate(原来旋转的度数+30);
                builder.rotate(rotate + 30);
                //用MapStatus.Builder对象.build,得到MapStatus对象
                MapStatus build = builder.build();
                //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate
                MapStatusUpdate newMapStatus = MapStatusUpdateFactory.newMapStatus(build);
                //map对象.setMapStatus,传入MapStatusUpdate对象
                baiduMap.setMapStatus(newMapStatus);

                break;
            case R.id.overlook_bt:
                //俯仰(0 ~ -45),每次在原来的基础上再俯仰-5度
                //获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus
                MapStatus mapStatus1 = baiduMap.getMapStatus();
                //然后MapStatus.overlook就可以拿到原来的俯仰度数.
                float overlook = mapStatus1.overlook;

                //通过new MapStatus.Builder得到MapStatus.Builder对象
                MapStatus.Builder builder1 = new MapStatus.Builder();
                //用MapStatus.Builder对象.overlook(原来俯仰的度数-5);
                builder1.overlook(overlook - 5);
                //用MapStatus.Builder对象.build,得到MapStatus对象
                MapStatus build1 = builder1.build();
                //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值