百度地图覆盖物功能

最近在做一个充电站的项目,首页要求是地图显示 ,刚开始用的demo是百度SDK2.4的 公司还要集成ping++ 支付 ,搞来搞去各种不兼容 ,后来换成3.0的以后就解决了 ,真心不明白为什么啊 !

一个安卓项目要求半个月完成 ,我只想说外包公司真的很苦逼 ,工资也低一个月才4000  ,还累的跟狗一样 ,不过真的挺锻炼人的 ,如果想要锻炼一下自己的朋友可以找个外包公司锻炼一下  ,由于本人第一次写博客 ,不为别的  ,只为记录一下,以后万一其他地方也用到了  ,方便查找,也给有同样需求的朋友们提供一种思路,废话不多说,先看效果图吧!(我看别人的博客就喜欢先看效果图 ,一看就知道这篇博客大致说的什么,第二也能清楚的知道是不是自己想要的功能)

工程结构图:
这里写图片描述

使用百度地图 ,需要在manifest文件中添加一些权限:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <!-- 访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
    </uses-permission>
    <!-- 允许应用读取低级别的系统日志文件 -->
    <uses-permission android:name="android.permission.READ_LOGS" >
    </uses-permission>

我个人遇到的问题以及解决方案都已经在代码里标明了 希望能给大家一点帮助!

if (m == marker[index]) {
    // 将marker所在的经纬度的信息转化成屏幕上的坐标
    final LatLng ll = marker[index].getPosition();
    Point p = mBaiduMap.getProjection().toScreenLocation(ll);
    p.y -= 47;
    Log.e("将经纬度转换成屏幕上的坐标", "--!" + p.x + " , " + p.y);
    LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p);
    Log.e("经纬度", llInfo.latitude + "      "+ llInfo.longitude);
    /****
     * 问题 如果 mInfoWindow = new InfoWindow(popupWindow,
     * llInfo, -80); 那么点击这个Marker弹出的window就会随着地图的放大缩小而越来越远
     * 
    */

    // 为弹出的InfoWindow添加点击事件
    mInfoWindow = new InfoWindow(popupWindow, ll, -80);//-40这个值  影响弹框距离Marker的位置
    /***
     * 加上这两句 实现的一个功能是点击Marker图标后
    * 
    * 
    * 将marker显示在屏幕中间
    */
    MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
    mBaiduMap.setMapStatus(u);

    tv_yuyue = (TextView) popupWindow.findViewById(R.id.tv_yuyue);
    tv_yuyue.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Log.e("预约", "预约");
        }
                        });
    tv_daohang = (TextView) popupWindow.findViewById(R.id.tv_daohang);
    tv_daohang.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Log.e("预约", "单行");

        }
    });
}
}
// 显示InfoWindow
mBaiduMap.showInfoWindow(mInfoWindow);

最后项目的运行效果图:
这里写图片描述这里写图片描述

demo下载地址:点击下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值