android mapview 泡泡效果

abdroid 高德地图(MapView) 在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。MapView 是 AndroidView 类的一个子类, 用于在 Android View 中放置地图。MapView 是地图容器。2、在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹。添加so文件,在src/main/目录下新建jniLibs目录,并将文件放入其中。1、运行进入控制台。 阅读详情


就是上面的样子


做这个过程中我碰到两个问题:
1:如何做带尾巴的气泡View
2:如何把这个View添加到MapView中.

1:如何做带尾巴的气泡View
我是采用背景图的方式来实现的.当然,普通的PNG在View 缩放的时候会失真,尤其是那个尖尖的尾巴.
后来采用9.png的格式,才完成了不变形的效果.9.png格式的Png可以用SDK\Tools\draw9patch.bat来处理,只要把普通的 png的边上标志一下就可以了,具体draw9patch.bat如何使用这里就不说了,网上有很多文档,自己查查就知道了.
我生成的9.png就是下面这个样子,注意四周的黑线.就是9png拉伸时的标识

有了这个png,直接放到你的工程下的res/drawable目录就可以了,
然后在res/layout目录下建立你的view的xml文件,比如叫overlay_pop.xml,我的是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" 
 android:background="@drawable/bubble_background" <!--这就是那个9.png-->
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"
 android:paddingLeft="5px"
 android:paddingTop="5px"
 android:paddingRight="5px"
 android:paddingBottom="20px"    <!--注意加上padding,否则view里面的东西就画到边框上了-->
   >
    <TextView android:id="@+id/map_bubbleTitle" 
       android:ellipsize="marquee" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"
       android:gravity="center_horizontal"
       android:singleLine="true" 
       style="@style/map_BubblePrimary" /> <!--style可以没有,我这里第一个TextView表示标题,用的是大字体-->
    <TextView  android:id="@+id/map_bubbleText" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:singleLine="false" 
       style="@style/map_BubbleSecondary" /><!--style可以没有,我这里第二个TextView表示描述信息,用的是大字体-->
</LinearLayout>

这样popView就建立好了

2:如何把这个View添加到MapView中.
通常是在mapView中点击某个位置,弹出popView
或者点击某个Overlay弹出popView,这里用点击Overlay来说明,

overlay有onTap()方法,你可以实现自己的overlay,overideonTap()方法,弹出popView,
也可以使用setOnFocusChangeListener(),在listener中实现弹出popView,.
我是用的listener,因为setOnFocusChangeListener在失去焦点也会触发,我可以再失去焦点的时候隐藏popView.

MapView是继承自ViewGroup 的,因此,MapView有addView()方法,同时还有MapView.LayoutParams
MapView.LayoutParams 可以根据GeoPoint来定位,我就是利用这个特性来定位弹出的popView的.

PointItemizedOverlay overlay = new PointItemizedOverlay(drawable); <!--这是我继承自ItemizedOverlay的overlay,主要就是画一个图片,写一个名称,很简单,这里不贴具体代码了-->

public class BaseMapActivity extends MapActivity {

 /**
  * 地图View
  */
 protected MapView mapView;

 /**
  * 弹出的气泡View
  */
 private View popView;
 /**
    监听器
  */
 private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {

     @Override
     public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {

         //创建气泡窗口
         if (popView != null) {
             popView.setVisibility(View.GONE);
         }

         if (newFocus != null) {

            MapView.LayoutParams geoLP = (MapView.LayoutParams) popView.getLayoutParams();
            geoLP.point = newFocus.getPoint();//这行用于popView的定位
            TextView title = (TextView) popView.findViewById(R.id.map_bubbleTitle);
            title.setText(newFocus.getTitle());

            TextView desc = (TextView) popView.findViewById(R.id.map_bubbleText);
            if (newFocus.getSnippet() == null || newFocus.getSnippet().length() == 0) {
                desc.setVisibility(View.GONE);
            } else {
                desc.setVisibility(View.VISIBLE);
                desc.setText(newFocus.getSnippet());
            }

            mapView.updateViewLayout(popView, geoLP);
            popView.setVisibility(View.VISIBLE);
         }
      }
   };

   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       /** 省略其他代码 **/

       //初始化气泡,并设置为不可见
       popView = inflater.inflate(R.layout.overlay_popup, null);
       mapView.addView( popView, new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, null, MapView.LayoutParams.BOTTOM_CENTER));
       //由于我的气泡的尾巴是在下边居中的,因此要设置成MapView.LayoutParams.BOTTOM_CENTER.
       //这里没有给GeoPoint,在onFocusChangeListener中设置
       views.add(popView);
       popView.setVisibility(View.GONE);

       添加overlay
       PointItemizedOverlay overlay = new PointItemizedOverlay(drawable);
       //设置显示/隐藏泡泡的监听器
       overlay.setOnFocusChangeListener(onFocusChangeListener);
       overlay.addOverlay(/*你自己的overlayItem*/);
       overlay.addOverlay(/*你自己的overlayItem*/);
       overlay.addOverlay(/*你自己的overlayItem*/);
    }
}


Android MapView 应用 Android MapView 应用,基于Android开发,应用Android SDK 1.5 立即下载

相关推荐

android地图获取当前位置,气泡标志,点击气泡跳转到另一个界面

android地图获取当前位置,气泡标志,点击气泡跳转到另一个界面

2.地图(MapView)

愿你出走半生,归来仍是少年!在Osmdroid中MapView是最为重要的一个类,它承载了用户交互、数据展示等重要责任。

我就是那个帕吉 653

Android中MapView的使用方法.pdf

Android中MapView的使用方法.pdf 学习资料 复习资料 教学资源

【亲测免费】 推荐项目:MapView——轻量高效的Android地图视图库

推荐项目:MapView——轻量高效的Android地图视图库 在寻求高效且易集成的地图解决方案时,往往面对的是复杂性与资源消耗的挑战。然而,今天要推荐的开源项目MapView,以其简约而不简单的姿态,为Android开发者带来了全新的选择。 项目介绍 MapView是一款专为Android设计的高性能地图显示库,它以极低的内存占用和简易的API,让开发人员能够迅速实现地图功能。通过支持平移、拖...

gitblog_00054的博客 1287

泛微E9表单建模查询列表勾选后带入流程明细表中

注意:参照下图各项配置,否则会有问题。

泛微二次开发后端知识总结 5309

单相全桥逆变器中比例谐振(PR)控制的优化设计与实现

本文深入探讨了比例谐振(PR)控制在单相全桥逆变器中的优化设计与实现。通过对比PID控制,详细阐述了PR控制在50Hz基波频率处实现无静差跟踪和强抗干扰性的原理。文章提供了从理论建模、参数整定(Kp, Kr, ωc)到仿真验证的完整实战流程,并介绍了准比例谐振(QPR)控制以增强频率鲁棒性,以及多谐振点设计以抑制特定谐波等进阶优化方法,最终实现THD从3%降至1%以内的显著性能提升。

weixin_29056781的博客 176

Android MapView简单使用

1. 首先先要获取你的debug keystore位置: 打开Eclipse--->Windows---> preferences--->Android--->Build 查看默认的debug keystore位置,我的是C:\Documents and Settings\Administrator\.android\debug.keystore 2. C:\Program Files\J

涂作权的博客 3598

零信任架构实战:“持续验证+动态授权”全流程解析(附策略引擎联动图)

《零信任实战指南:7图拆解核心流程与行业案例》摘要:本文通过7张架构图系统解析零信任五大核心流程:强身份认证、设备检查、动态授权、持续监控和自动降权。对比金融(重数据审计)与制造业(重物理绑定)的落地差异,指出三大常见误区及解决方案。数据显示,零信任可使安全响应提速60%,泄露成本降低45%。文章提供6个月实施路线图,强调零信任是"智能信任"体系,建议企业分阶段改造,优先保护核心系统。附赠金融/制造行业策略模板及甘特图示例。(149字)

sara_han的博客 773

Android SDK:构建一个购物中心搜索的应用(一)-Mapview & Location

为什么80%的码农都做不了架构师?>>> ...

weixin_34255793的博客 253

基于python的排课表系统,用python编写排课系统

实现一个具体的课程管理系统。(5) 学生可以查看自己选上的课的成绩,以及各个课程的得分、绩点,并给出其平均绩点,但不允许查看年级其他人的成绩。(2) 学生定制专属课表,可以查看整个学期本人的课程安排,包括课程名称、上课时间、上课地点、任课老师、学分等等。(13) 系主任可以查看整个系的全部学生以及他们的平均绩点,可以对每个班进行排名,或者也可以对整个系进行排名。(15) 系主任可以查看整个学期所开设的所有课程,包括这些课程的全部详细信息。(1) 学生基本信息的查询,学生可以对本人的系统登陆密码进行修改。

yang0728y的博客 1999

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 216

Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址

(全部源码地址:http://download.youkuaiyun.com/detail/totogo2010/4335701  )   上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富了。 主要有这么几道菜: 1、在地图上弹出泡泡显示信息,并且能相应泡泡的点击时间 2、自动定位当前位置(也就是我的位置) --添加了 GPS定位和基站定位。 3、获取经纬度对应的接到地址名称

空杯子 3万+

【系统分析师】高分论文:论基于构件的软件开发(气象灾害影响评估系统)

本文以某手机气象灾害影响评估系统为例,探讨了基于构件技术的软件开发实践。通过分析开发中常见的功能模块重复问题,提出建立企业构件库、针对性选择构件和加强构件管理的解决方案。项目实施中成功复用登录模块等通用构件,并针对气象数据转换需求开发新构件,最终在8个月内高质量完成系统建设。文章总结了构件开发的三个关键点:构件库建设是基础、构件选择需精准、构件管理要规范。同时指出需注意全新需求开发、性能优化等问题,建议通过培训提升团队对构件的理解力。该案例证明构件技术能有效缩短周期、降低成本,为企业积累可复用的技术资产。

数据知道的博客 4253

Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址...

代码我传到csdn资源库了;http://download.youkuaiyun.com/detail/totogo2010/4335701 上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富了。 主要有这么几道菜: 1、在地图上弹出泡泡显示信息,并且能相应泡泡的点击时间 2、自动定位当前位置(也就是我的位置) --添加了 GPS定位和基站定位。 ...

weixin_30421809的博客 136

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

百度地图之定位图层

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 在使用百度地图结合GPS进行定位一文中,我们已经介绍了利用GPS结合百度地图进行定位,另外我们也可以使用百度SDK里面集成的方法,直接进行定位,这样就不需要我们自己去写GPS定位的方法了,代码原型来自百度Demo,...

孤云博客 5348

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

iOS 【关于百度地图大头针标记 选中状态/点击状态 的区别及处理办法】

解决 iOS 端百度地图 API 大头针、区域划分、中心点定位等使用问题。

CoderZYWang 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android Map Api 使用和开发(1) 添加地图和界面

最近正在做和地图相关的项目,想记录和整理一下的这方面的内容发出来,既是自己整理总结,也是和别人分享经验。 做过android 地图相关项目的同学估计都会有一些相同的需求,这些需求在android 上谷歌自己做的地图软件都做得很好,很多人想模仿参考来做,比如:  1、弹出浮动的搜索框,并能搜索地址并定位 2、长按地图出现当前位置的泡泡(popup),泡泡里有标题和内容,有详细地址和

小傅同志的专栏 1110

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: android 添加水印效果的实现
下一篇: android 精确定位
eustoma
博客等级 码龄18年 79粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值