Android高德地图自定义Markers的例子

下文为各位重点介绍关于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 = 0; i < positionEneityList.size(); i++) {

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

       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(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

    view.layout(0, 0, 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, 1)

                .position(point)

                .title(id)

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

        return marker;

    }

    return null;

}

这样就实现了上述效果。

时间: 2024-08-09 06:33:39

Android高德地图自定义Markers的例子的相关文章

Android 高德地图 Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lan

Android 高德地图  java.lang.UnsatisfiedlinkError   Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;) 遇到一个bug 别的机型上没有碰到 只在lenovo的手机上  使用高德地图出现了bug   看了下log日志出现了 Native method not found: com.autonavi.amap.map

android 高德地图出现【定位失败key鉴权失败】

如题:android 高德地图出现[定位失败key鉴权失败] 原因:使用的是debug模式下的SHA1,发布的版本正确获取SHA1的方式见: 方法二使用 keytool(jdk自带工具),按照如下步骤进行操作:1.运行进入控制台. 2.在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹. 3.继续在控制台输入命令.开发模式使用 debug.keystore,命令为:keytool -list -v -keystore debug.keystore发布模式使用 ap

Android高德地图使用

在Swift基础 - - 高德地图实践(一)中使用swift来使用高德地图,这里使用Android实践高德地图包含定位,移动地图动画,获取网络数据,marker标记以及点击,Infowindow自定义界面以及点击,以及点击无marker地图上面隐藏infowindow等功能.直接看代码 package com.carmap.ui; import android.graphics.Color; import android.location.Location; import android.os.

Android高德地图开发详解

这段时间开发的时候用到了高德地图,对高德地图开发有心得体会,现在分享给大家,对我开发过百度地图的我来说,总体来说高德地图Demo,没有百度讲解的详细 个人更偏向于使用百度地图,但是没办发,项目需要使用高德地图,我开发的是定位,更具经纬度添加标记,标记点击事件,以及路线规划废话不多说,上代代码 那么首先导入高德给的jar,包,我开发的是2d地图, 这个包结构图,高德题图api也提供了步骤,就不多说了 下面添加权限,设置key <uses-permission android:name="an

Android 高德地图的定位,周边搜索

刚弄完这两个功能,当然是结合官网例子实现的.效果还行,稍作优化便可整合到app使用.在这里做一下总结,及说明下我的思路. 刚开始上手感觉比较乱学起来也比较累,方法,类太多,直接复制各种错,还不知道为什么这么做.现在我们一起交流下实现的思路: 1:定位:这是所有地图功能实现的基础,所以不管要实现诸如周边搜索啊,导航啊什么的都需要基于定位. 如何定位:官网上例子也很详细,主要是实现几个监听,并实现方法: aMap.setLocationSource(this);// 设置定位监听 //绑定监听 ma

Android高德地图开发——准备阶段

1.地图SDK下载 高德地图Android SDK主要包括地图SDK.搜索SDK和定位SDK.其中地图SDK有包括2D地图SDK和3D地图SDK. 3D SDK, 提供矢量地图显示.离线地图等功能. 2D SDK, 提供栅格地图显示.覆盖物绘制等功能. 搜索 SDK,提供兴趣点搜索.路径规划.公交查询.地理编码等功能. 定位 SDK,提供定位.逆地理编码(地址的文字描述).以及地理围栏功能. http://lbs.amap.com/api/android-sdk/down/(地图sdk和搜索sd

android高德地图绘制线 渐变处理

这个是为了实现淘宝物流轨迹的那种样式,轨迹路线是渐变色. 先说下物流轨迹实现流程. 1.高德地图3d.导航.搜索三个sdk的支持 2.通过导航获取一条路径,这个路径包含的点相当多,可能有上万个. 3.利用路径中的点划线,划线的点和导航提供的点是用的格式不一样,需要简单转换一下. 4.使用android自带的api “ArgbEvaluator”来计算每个点的颜色值. 5.把所有的颜色值放进一个数组,然后使用.colorValues(colorList).useGradient(true)这两个设

Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

此篇博客最后更新时间写自2016.5.18.当下高德地图jar版本为3.3.1. 使用高德地图碰到此问题,纠结许久(接近4个多小时). 记录在此,希望遇到相同问题的读者可以有所借鉴. 错误截图: 导致问题的原因主要有两种: 1.so文件操作不当问题.可能是so文件与jar不匹配,也可能是so文件未导入. 解决办法: 下载与jar相匹配的jar.sdk下载网址:http://lbs.amap.com/api/android-sdk/down/ 2.由于在X86手机上运行,而此时高德地图官网并未发布

Android高德地图的定位

看注释解析基本上OK了. 布局,权限: <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCAT