下文为各位重点介绍关于Android高德地图自定义Markers的例子,希望这篇文章能够让各位理解到Android高德地图自定义Markers的方法。

之前的博客里说了地图的嵌入和定位,今天就说说在地图上显示一些我们想要的。在地图中有自带的Markers(标记),但是它只显示一个椭圆的图标,一般是不符合我们的需求的,这样就要我们自己来自定义。首先标记有下面一些属性;

1.position(Required) 在地图上标记位置的经纬度值。参数不能为空。

2.title 当用户点击标记,在信息窗口上显示的字符串。

3.snippet 附加文本,显示在标题下方。

4.draggable 如果您允许用户可以自由移动标记,设置为“ true ”。默认情况下为“ false ”。

5.visible 设置“ false ”,标记不可见。默认情况下为“ true ”。

6.anchor图标摆放在地图上的基准点。默认情况下,锚点是从图片下沿的中间处。

7.perspective设置 true,标记有近大远小效果。默认情况下为 false。

8.可以通过Marker.setRotateAngle() 方法设置标记的旋转角度,从正北开始,逆时针计算。如设置旋转90度,Marker.setRotateAngle(90)

9.通过setFlat() 方法设置标志是否贴地显示

自定义图标通常由 BitmapDescriptor 设置。我们可以在类 BitmapDescriptorFactory 使用以下其中一种方法定义。

1.fromAsset(String assetName) 在 assets 目录中使用图像创建自定义标记。

2.fromBitmap (Bitmap image) 使用位图图像创建自定义标记。

3.fromFile (String path) 指定路径的文件创建自定义图标。

4.fromResource (int resourceId) 使用已经存在的资源创建自定义图标。先看一下要实现的效果:

地图自带标记  实现效果

实现思路是:自定义布局,获取数据填入相应位置,然后将view转成Bitmap,调用AMap.addMarker(markerOptions) 方法添加到地图上。

  1. 自定义布局并填充数据:

for (int i = ; i < positionEneityList.size(); i++) {

    if (positionEneityList.get(i).getType().equals("")) {

       View view = View.inflate(getActivity(),R.layout.view_day, null);

       TextView tv_price = (TextView) view.findViewById(R.id.tv_price);

       TextView tv_price_status = (TextView) view.findViewById(R.id.tv_price_status);

       tv_price.setText(positionEneityList.get(i).getPrice());

       tv_price_status.setText("元/时");

       Bitmap bitmap = CommentActivity.convertViewToBitmap(view);

       drawMarkerOnMap(new LatLng(Double.parseDouble(positionEneityList.get(i).getLatitude())

, Double.parseDouble(positionEneityList.get(i).getLongitude())), bitmap, positionEneityList.get(i).getId());

    }

 }

2.转成Bitmap:

//view 转bitmap

public static Bitmap convertViewToBitmap(View view) {

    view.measure(View.MeasureSpec.makeMeasureSpec(, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(, View.MeasureSpec.UNSPECIFIED));

    view.layout(, , view.getMeasuredWidth(), view.getMeasuredHeight());

    view.buildDrawingCache();

    Bitmap bitmap = view.getDrawingCache();

    return bitmap;

}

3.添加到地图上:

/**

 * 在地图上画marker

 *

 * @param point      marker坐标点位置(example:LatLng point = new LatLng(39.963175,

 *                   116.400244); )

 * @param markerIcon 图标

 * @return Marker对象

 */

private Marker drawMarkerOnMap(LatLng point, Bitmap markerIcon, String id) {

    if (aMap != null && point != null) {

        Marker marker = aMap.addMarker(new MarkerOptions().anchor(0.5f, )

                .position(point)

                .title(id)

                .icon(BitmapDescriptorFactory.fromBitmap(markerIcon)));

        return marker;

    }

    return null;

}

这样就实现了上述效果。

最新文章

  1. Spring之AntPathMatcher
  2. 工欲善其事必先利其器——dreamweaver
  3. HDU 3775 Chain Code ——(Pick定理)
  4. [工作积累] Android dynamic library &amp; JNI_OnLoad
  5. How Tomcat Works(三)
  6. 【阿里云产品公测】ACE安装wordpress博客图文教程
  7. 【学习笔记】【C语言】第一个C程序
  8. Mvvm Light Toolkit for WPF/Silverlight系列之搭建mvvmlight开发框架
  9. 高效实现 std::string split() API
  10. Android Timer的使用
  11. hbase权威指南学习笔记--过滤器
  12. .net Quartz 服务 作业调度
  13. JavaScript中的alert()与console.log()的区别
  14. content字符生成配合CSS3 animation的点点点loading
  15. 最新的Delphi版本号对照
  16. 面试简单整理之JVM
  17. anaconda安装tensorflow
  18. bzoj 2809 可并堆维护子树信息
  19. 安装XP时BIOS的设置(ahci ide)
  20. It is likely that the remote side declared peer gone on this JVM

热门文章

  1. linux 版本家族
  2. FreeBSD简单配置SSH并用root远程登陆方法
  3. C# - List操作- 去掉重复
  4. [iOS] 创建第一个应用程序项目
  5. 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)
  6. Spring redirect直接返回项目根文件夹
  7. Swift 新语言开发
  8. setTimeout()和setInterval()小结
  9. fread(),fwrite() 读/写流
  10. (转)Div+CSS布局入门