Android之百度地图(二)

在这里插入图片描述
不是很明白allowBackup的方法 查询一下
Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是true。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。
本文来自 iRuoBin 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_31387043/article/details/51452782?utm_source=copy
在这里插入图片描述
开发百度地图自然不用多说,需要申请很多的权限!!

在这里插入图片描述
要完成百度地图的开发自然需要大量的这些百度提供的文件了,不多说
这些文件属于json类型,比xml的文件类型所占用的空间还小,很适合互联网之间信息的传输。
在这里插入图片描述
以上是百度百科的解释。

接下来谈谈关于Java中使用log而不使用System.out.println(),
快捷键 在方法里面输入logd 然后按下tab键
在这里插入图片描述
然后在方法外面输入 logt +tab键
在这里插入图片描述
效果如图所示。。。

public class MainActivity extends Activity
{
    private MapView mMapView = null;
    private BaiduMap mBaiduMap;
    private BitmapDescriptor bitMapN = null;
    private int num_Index=1;//气球计数器
    private int presentIndex = -1;//当前marker索引
    private List<LatLng> LatLnglist = new ArrayList<LatLng>();//坐标集合
    private int yoffset=0;    //偏移量
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
        //获取地图对象引用
        mBaiduMap = mMapView.getMap();
        //设置地图缩放比
        float mZoomLevel = 16.0f;
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(mZoomLevel));
        //加载地图中心点默认为北京天安门
        mBaiduMap.setMapStatus
        (
            MapStatusUpdateFactory.newLatLng( new LatLng(39.91635753159,116.40385626888427))
        );
        //加载marker图片
        bitMapN = BitmapDescriptorFactory.fromResource(R.drawable.point_n);
        //添加地图单击事件监听
        mBaiduMap.setOnMapClickListener(new BaiduMap.OnMapClickListener()
        {
            //点击地图事件回调方法
            @Override
            public void onMapClick(LatLng point)
            {
                SetMaker(point);//添加气球
                LatLnglist.add(point);	//把当前位置信息添加到LatLnglist集合中
            }
           //点击POI(地理兴趣点)事件回调方法
           @Override
            public boolean onMapPoiClick(MapPoi arg0)
            {
                return false;
            }
        });
        //地图marker点击事件监听
        mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener()
        {//添加气球监听
            @Override
            public boolean onMarkerClick(Marker marker)
            {
                presentIndex = Integer.parseInt(marker.getTitle()) - 1;//设置当前marker索引
                ShowWindow(LatLnglist.get(presentIndex));//显示自定义窗口
                mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(LatLnglist
                        .get(presentIndex)));//将地图中心点移到当前marker位置
                return true;
            }
        });
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//设置地图模式
    }
    public void SetMaker(LatLng point)
    {
        //构建MarkerOption,用于在地图上添加Marker
        OverlayOptions mOverlay = new MarkerOptions()//创建MarkerOptions对象
                .position(point) //设置当前MarkerOptions对象的经纬度
                .icon(bitMapN)//设置当前MarkerOptions对象的自定义图标
                .perspective(true)//设置为近大远小效果
                .title(num_Index+"");//设置Marker 的标题
        mBaiduMap.addOverlay(mOverlay); //在地图上添加Marker,并显示
        num_Index++;//计数器自加
    }
    public void ShowWindow(LatLng point)
    {
        LayoutInflater mInflater = LayoutInflater
                .from(MainActivity.this);//加入窗口布局
        LinearLayout ll = (LinearLayout) mInflater.inflate(
                R.layout.view_map_popup, null);//获取窗口 LinerLayout
        TextView Info = (TextView) ll.findViewById(R.id.popInfo);//获取引用
        Info.setText("经度为:"+point.longitude+""+"\n"+"纬度为:"+point.latitude);


        InfoWindow infoWindow=new InfoWindow(ll,point,yoffset);//初始化通知窗口

        Info.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        mBaiduMap.hideInfoWindow();
                                    }
                                }
        );                                                      //对通知窗口添加监听

        mBaiduMap.showInfoWindow(infoWindow);                   //地图上显示通知窗口

    }
    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
    @Override
    protected void onResume()
    {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause()
    {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
        Log.d(TAG, "onPause: ");
    }

    private static final String TAG = "MainActivity";

以上是整个地图的Mainactivity 代码
下面逐步分析

先声明对象 MapView BaiduMap BitmapDescriptor
分别是地图控件 地图引用 比特图描述符
在这里插入图片描述

这一段不难理解 主要是注意SDK各组件的初始化
在这里插入图片描述

给比特图描述符加载图片 (气泡)
添加地图单击事件方法
在这里插入图片描述

SetMaker方法
OverlayOptions 对象的使用方法
以及在地图上添加的气泡的方法 addOverlay 参数为OverlayOptions 对象

public void SetMaker(LatLng point)
    {
        //构建MarkerOption,用于在地图上添加Marker
        OverlayOptions mOverlay = new MarkerOptions()//创建MarkerOptions对象
                .position(point) //设置当前MarkerOptions对象的经纬度
                .icon(bitMapN)//设置当前MarkerOptions对象的自定义图标
                .perspective(true)//设置为近大远小效果
                .title(num_Index+"");//设置Marker 的标题
        mBaiduMap.addOverlay(mOverlay); //在地图上添加Marker,并显示
        num_Index++;//计数器自加
    }

气泡点击的监听
在这里插入图片描述
自定义窗口 当点击气泡的时候弹出一个自定义的窗口
然后在点击该窗口 窗口隐藏
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑瞳丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值