我用的百度地图v4.0.0
要通过PopupWindow实现普通地图与卫星地图切换
部分代码借鉴自 http://www.cnblogs.com/mengdd/p/3569127.html 感谢原作者

首先写个布局文件 layers_item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageViewandroid:id="@+id/normalmap"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/normal_map_mode" android:layout_marginRight="10dp"/><ImageViewandroid:id="@+id/weixingmap"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/weixing_map_mode"/></LinearLayout>


在地图主界面添加一个类似开关的图标

<ImageViewandroid:id="@+id/iv_map_mode"android:layout_width="40dp"android:layout_height="40dp"android:layout_alignParentRight="true"android:layout_below="@+id/searchView1"android:layout_marginRight="5dp"android:layout_marginTop="16dp"android:src="@drawable/map_mode" />

接下来就是activity了,主要代码如下:

@Overrideprotected void onCreate(Bundle savedInstanceState) {IvMapMode = (ImageView) findViewById(R.id.iv_map_mode);setMapMode();}private void setMapMode() {IvMapMode.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {IvMapMode.setImageResource(R.drawable.map_mode_clicked);showPopupWindow(v);}});protected void showPopupWindow(View v) {// TODO Auto-generated method stub// 一个自定义的布局,作为显示的内容View contentView = LayoutInflater.from(mContext).inflate(R.layout.layers_item_layout, null);IvNormalMap = (ImageView) contentView.findViewById(R.id.normalmap);IvWeixingMap = (ImageView) contentView.findViewById(R.id.weixingmap);IvNormalMap.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {IvNormalMap.setImageResource(R.drawable.search_biaozhun_selected);IvWeixingMap.setImageResource(R.drawable.map_weixing);mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);popupWindow.dismiss();}});IvWeixingMap.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {IvNormalMap.setImageResource(R.drawable.search_biaozhun);IvWeixingMap.setImageResource(R.drawable.map_weixing_selected);mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);popupWindow.dismiss();}});popupWindow = new PopupWindow(contentView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);popupWindow.setTouchable(true);popupWindow.setTouchInterceptor(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {IvMapMode.setImageResource(R.drawable.map_mode);return false;// 这里如果返回true的话,touch事件将被拦截// 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss}});// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框// 我觉得这里是API的一个bugpopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.search));WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);int xpos = manager.getDefaultDisplay().getWidth() / 2 - popupWindow.getWidth() / 2;// xoff,yoff基于anchor的左下角进行偏移。popupWindow.showAsDropDown(v, 0, 0);}

这样就实现了点击主界面小按钮,弹出popupwindow的效果,按钮本身会变色
卫星图和普通图也会变色,我是通过写了两个selector实现的,后来发现不太合理,这种情况不应该只是点击变色,而是点击后一直变色。但是我也把代码贴在这里吧,仅供参考

normal_map_mode.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/search_biaozhun_selected" android:state_pressed="true"/><item android:drawable="@drawable/search_biaozhun"/></selector>weixing_map_mode.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/map_weixing_selected" android:state_pressed="true"/><item android:drawable="@drawable/map_weixing"/></selector>

selector文件要放到drawable目录里才能用,放到其他目录是无效的,就像.9图一样。

最后实现的效果是这样的,不知道为啥上下间距这么大,我设置的高度都是包裹内容,有大神解释下吗?

PopupWindow百度地图API普通地图与卫星地图切换相关推荐

  1. Google地图API方式查看卫星地图

    最近发现谷歌地图http://www.google.cn/maps 左下角点击卫星图像的时候,不能切换到卫星地图模式,于是借助Google地图API方式写了个DEMO,算是学习了下Google地图,代 ...

  2. 百度地图实现普通地图、卫星图、三维图、混合图(卫星图+路网)

    普通街道视图:BMAP_NORMAL_MAP 三维视图:BMAP_PERSPECTIVE_MAP 卫星视图:BMAP_SATELLITE_MAP 卫星和路网的混合视图:BMAP_HYBRID_MAP ...

  3. 如何使用谷歌离线API发布谷歌卫星地图

    出于保密等原因,有的时候需要发布离线地图进行使用,其中大家第一时间想到的就是使用谷歌的API进行发布,网上也有网友打包了谷歌的API进行离线使用,今天讲解的就是如何使用这个离线的API发布谷歌卫星地图 ...

  4. 从百度地图api到我的地图app

    从百度地图api到我的地图app 1.了解百度地图api 获取AK(秘钥/百度地图api) 注册和获取秘钥中会遇到的问题: 在android studio上配置百度地图SDK [开发文档链接](htt ...

  5. 【百度地图API】多家地图API内存消耗对比测验(带源码)

    任务描述: 啊,美妙的春节结束了.酸奶小妹和妈妈的山西平遥之旅也宣告成功!距离平遥古城7km,有一个同样身为"世界文化遗产"的寺庙,叫做"双林寺".双林寺的精致 ...

  6. html标签怎么制作足迹地图,用百度地图API做个人足迹地图教程

    上次折腾了个人百度足迹地图,积累了点经验,现分享给大家,如有兴趣都可以学着做一个.二话不说,先放出代码,点击下载. 压缩包含三个文件以及一个文件夹,其中"x1.php"是主题模板, ...

  7. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

    一.如何进行标注 1.首先,我们需要找准标注的位置.比如,我想标注"中央民族大学"附近的网球场.那么,我转到坐标拾取工具页面,请点击http://openapi.baidu.com ...

  8. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍...

    摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. -------------------------------------------------- ...

  9. 下载的百度卫星地图如何与谷歌卫星地图叠加

    由于百度地图在火星坐标的基础上还进行了自己的加密,坐标是无效的,我们称之为"百度坐标".但是有的时候又不得不用到百度的地图,这个时候就比较麻烦,需要对其进行坐标的纠正,那么就以百度 ...

最新文章

  1. Structure-from-Motion Revisited
  2. chmod a+r *:用户自己使用此命令,柯给所有用户添加可读的权限
  3. java: \uxxxx unicode编码
  4. 终于有篇看的懂的 B 树文章了!
  5. 自己动手制作chm格式开源文档
  6. 深度linux安装postgresql_在 Linux 上安装 PostgreSQL
  7. 硬核|定时任务的10种实现方案,满足你的不同需求!
  8. Image:介绍一些跟图片有关的控件,如图片展示特效,图片生产,图片保护等
  9. 机器学习中的相似性度量(转载)
  10. DataTable 转换 DataSet
  11. php压缩解压缩插件,PHP压缩解压缩类:PclZip
  12. 二级 办公软件高级应用技术_塔河县(局)工会举办电脑办公应用技术培训班...
  13. 网络社区划分的算法分类(2)
  14. 谷歌地球尝试验证时检测到错误_验证码为何越来越难了?
  15. java实现供应链_基于jsp的企业物流供应链-JavaEE实现企业物流供应链 - java项目源码...
  16. matlab j计算丰水期的值,科学计算与MATLAB语言超星2020期末考试查题公众号答案
  17. [html] 微软雅黑是有版权的,在页面中使用font-family:Microsoft YaHei会不会有版权问题呢?
  18. 高端制造业企业信息化解决方案,工业电商平台设备、数据、体系预测性维护
  19. linux怎么用命令上传本地文件,Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件...
  20. 【渝粤教育】国家开放大学2018年秋季 2129T药物化学 参考试题

热门文章

  1. Java+MySQL 基于ssm的停车位短租租赁管理系统程序#毕业设计
  2. 002_旭日X3派初探:TogetherROS安装
  3. hive的随机函数rand()
  4. 如何阻止局域网用户使用P2P软件下载(转)
  5. SD卡与SD卡座电路以及TF卡(Micro SD Card,原名Trans-flash Card(TF卡))插拔式卡座和自弹出的卡座的引脚定义详细
  6. jperf linux运行,Linux网络性能评估工具iperf
  7. VOC和COCO数据集
  8. 线程池原理及创建(转)
  9. 无监督关键短语的生成问题博客07--create_vocabulary.py的分析
  10. pspad右键菜单失效的问题