自定义地图覆盖物(包括view)

原文地址:http://my.oschina.net/freestyletime/blog/291638

官方例子

这个百度地图 android SDK 关于基础地图覆盖物的例子

http://developer.baidu.com/map/wiki/index.php?title=androidsdk/guide/basicmap#.E6.A0.87.E6.B3.A8.E8.A6.86.E7.9B.96.E7.89.A9

//定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.icon_marka);
//构建MarkerOption,用于在地图上添加
 Marker  OverlayOptions option = new MarkerOptions()
    .position(point)
    .icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);

其中的Marker 也就是标记的意思,就是咱们今天要说的覆盖物,其中的难点在于它只接收一个bitmap来显示,那假如当我们有需求,需要加入一些复杂的View(比如Linearlayout嵌套一个TextView和ImageView)来代替这个bitmap怎么办?在我查了很多资料以后,终于找到了解决方案。

覆盖物(Marker)自定义

其实解决方案很简单,就是将View或者Viewgroup转化为Bitmap就行了。因为地图的SDK是第三方提供的,我们没有权利要求别人去改接口来适应我们,所以我们只好想办法去适应他们。

现在我自定义了一个布局,如下所示

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:background="@drawable/popup"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content">

        <ImageView android:layout_width="35dp"
                   android:layout_height="35dp"
                   android:scaleType="centerCrop"
                   android:padding="5dip"
                   android:src="@drawable/head_1"/>

        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="@android :color/black"
                  android:textSize="20sp"
                  android:text="测试"
              />

</LinearLayout>

然后想让它转为Bitmap之后,装进Marker。下面是核心转换函数:

  private Bitmap getViewBitmap(View addViewContent) {

        addViewContent.setDrawingCacheEnabled(true);

        addViewContent.measure(
                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
        addViewContent.layout(0, 0,
                addViewContent.getMeasuredWidth(),
                addViewContent.getMeasuredHeight());

        addViewContent.buildDrawingCache();
        Bitmap cacheBitmap = addViewContent.getDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);

        return bitmap;
    }

其中,最外层的布局我用Relativelayout尝试过,但无法转化得到bitmap,深层次的原因有兴趣大家可以试试。

只要最外层是LinearLayout,里面的布局你可以随意写,不管再嵌套多少层其他的布局,比如Relativelayout,都能顺利的显示到地图上。

时间: 2024-08-02 19:18:00

自定义地图覆盖物(包括view)的相关文章

百度地图上自定义图片覆盖物上加点击事件

在百度地图上加自定义图片覆盖物之后,在这个覆盖物上加点击手势,发现并不识别.原因不太清楚.不过可以通过别的方法来实现这个功能. 需要用到BMKMapViewDelegate中的方法: - (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate 然后判断所点击的坐标是否在指定区域内,在指定区域内之后,调用自己写的相应地方法即可. 百度地图上自定义图片覆盖物上加点击事件,布布扣,

03.(最新版)百度地图&#167;覆盖物OverlayOptions

转载请标明:http://blog.csdn.net/u012637501 目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物.道路.河流.学校.公园等内容.所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线.多边形和圆等).定位图标等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动.我们可根据自己实际的业务需求,利用标注覆盖物,在地图指定的位置上添加标注信息. 一.APIs 1.LatLng类 (1)作用:地理坐标基本数据结构

【07】覆盖物(百度地图覆盖物笔记)

[07]覆盖物 地图覆盖物概述 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线和多边形和圆).信息窗口等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 地图API提供了如下几种覆盖物: Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法. Marker:标注表示地图上的点,可自定义标注的图标. Label:表示地图上的文本标注,您可以自定义标注的文本内容. Polyline:表示地图上的折线. Polygon:表示地图上的多边

FineReport中如何用JavaScript自定义地图标签

在日常使用地图过程中,通常会遇到地图标签,提示点等显示不满足我们的需求,需要进行JavaScript代码编写. 例如:在使用地图过程中,会发现很多地名显示的位置偏离.这时候就需要使用JavaScript进行调控.以黑龙江和内蒙古为例,来介绍下如何在FineReport中利用JavaScript自定义地图标签. 新建地图 以区域地图为例,新建表单,拖入地图(新特性)组件,地图边界选择区域地图下的中国(省级): 数据准备 新建工作簿,添加数据集ds1,SELECT*FROM地图1,选中图表,选择图表

用报表软件自定义地图

以FineReport软件为例 在企业的信息数据中,对于那些业务遍布全国的企业来说,无疑可以直接使用我们的内置中国地图来直观展现,但是对于展示没有内置地图的数据的,比如说通过地图展示县级市数据,我们则可用过自定义地图实现. 将自定义的图片上传至FineReport,在FineReport中定义好图片上对应区域或者对应点的名称,此时上传的图片就被转化成了和FineReport内置的图表具有相同属性的文件,再设置好要展示的图表数据,就可以跟FineReport内置的图表一样,可以数据点提示,可以联动

百度地图API自定义地图

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

Datazen自定义地图

 Datazen的地图数据定义主要以ESRI的Shape文件格式为主,这是现如今被广泛使用的一种地图数据格式.在Datazen中,自定义地图需要提供如下两个地图数据定义文件: SHP文件提供地图的位置数据 DBF文件提供文件的元数据信息 同时需要元数据中的NAME字段需要跟位置数据中的名称能够匹配的上. 准备好这两部分数据之后,就可以在系统的控制面板中将其上传到系统中. 首先点击Upload Map Shape-按钮,然后给地图输入一个名字,依次指定shape文件和数据文件所在的位置,最后点

Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)

一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: 1.对Android中Window类中的DecorView有所了解 2.对Scroller类实现平滑移动效果 3.自定义ViewGroup的实现 首先来看看效果图吧:    下面现在就来说说这里咱们实现侧滑View的基本思路吧,这里我采用的是自定义一个继承于RelativeLayout的控件叫做XC

Datazen 自定义地图--中国地图

背景: 关于Datazen可以google一下,因为目前Datazen还没有中文版,所以google出来的资料会多一点,由于公司想用Datazen来做报表展示,所以有了下文. 参考文章: 中文---http://www.cnblogs.com/aspnetx/p/4615461.html(基础知识) http://mail.cfanz.cn/index.php?c=article&a=read&id=271782(主要参考这篇吧,上面“哥本哈士奇”的文章里和这篇是一样的,我搜索出来很多篇都