点标记用来在地图上标记任何位置,例如用户位置、车辆位置、店铺位置等一切带有位置属性的事物。

地图 SDK 提供的点标记功能包含两大部分,一部分是点(俗称 Marker)、另一部分是浮于点上方的信息窗体(俗称 InfoWindow)。同时,SDK 对 Marker 和 InfoWindow 封装了大量的触发事件,例如点击事件、长按事件、拖拽事件。

Marker 和 InfoWindow 有默认风格,同时也支持自定义。由于内容丰富,以下只能展示一些基础功能的使用,详细内容可分别参考官方参考手册。

绘制默认 Marker

绘制 Marker 的代码如下:

LatLng latLng = new LatLng(39.906901,116.397972);

final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));

以上代码绘制的 Marker 效果如下图:

Marker 常用属性

名称说明

position在地图上标记位置的经纬度值。必填参数

title点标记的标题

snippet点标记的内容

draggable点标记是否可拖拽

visible点标记是否可见

anchor点标记的锚点

alpha点的透明度

绘制自定义 Marker

可根据实际的业务需求,在地图指定的位置上添加自定义的 Marker。MarkerOptions 是设置 Marker 参数变量的类,自定义 Marker 时会经常用到。

下面以自定义 Marker 图标为例进行代码说明:

MarkerOptions markerOption = new MarkerOptions();

markerOption.position(Constants.XIAN);

markerOption.title("西安市").snippet("西安市:34.341568, 108.940174");

markerOption.draggable(true);//设置Marker可拖动

markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory

.decodeResource(getResources(),R.drawable.location_marker)));

// 将Marker设置为贴地显示,可以双指下拉地图查看效果

markerOption.setFlat(true);//设置marker平贴地图效果

以上代码绘制的 Marker 效果如下图:

绘制动画效果 Marker

自地图 SDK V4.0.0 版本起,SDK 提供了给 Marker 设置动画的方法,具体实现方法如下:

Animation animation = new RotateAnimation(marker.getRotateAngle(),marker.getRotateAngle()+180,0,0,0);

long duration = 1000L;

animation.setDuration(duration);

animation.setInterpolator(new LinearInterpolator());

marker.setAnimation(animation);

marker.startAnimation();

可触发的 Marker 事件

Marker 点击事件

点击 Marker 时会回调AMap.OnMarkerClickListener,监听器的实现示例如下:

// 定义 Marker 点击事件监听

AMap.OnMarkerClickListener markerClickListener = new AMap.OnMarkerClickListener() {

// marker 对象被点击时回调的接口

// 返回 true 则表示接口已响应事件,否则返回false

@Override

public boolean onMarkerClick(Marker marker) {

return false;

}

};

// 绑定 Marker 被点击事件

mAMap.setOnMarkerClickListener(markerClickListener);

Marker 拖拽事件

拖拽 Marker 时会回调AMap.OnMarkerDragListener,监听器的实现示例如下:

// 定义 Marker拖拽的监听

AMap.OnMarkerDragListener markerDragListener = new AMap.OnMarkerDragListener() {

// 当marker开始被拖动时回调此方法, 这个marker的位置可以通过getPosition()方法返回。

// 这个位置可能与拖动的之前的marker位置不一样。

// marker 被拖动的marker对象。

@Override

public void onMarkerDragStart(Marker arg0) {

// TODO Auto-generated method stub

}

// 在marker拖动完成后回调此方法, 这个marker的位置可以通过getPosition()方法返回。

// 这个位置可能与拖动的之前的marker位置不一样。

// marker 被拖动的marker对象。

@Override

public void onMarkerDragEnd(Marker arg0) {

// TODO Auto-generated method stub

}

// 在marker拖动过程中回调此方法, 这个marker的位置可以通过getPosition()方法返回。

// 这个位置可能与拖动的之前的marker位置不一样。

// marker 被拖动的marker对象。

@Override

public void onMarkerDrag(Marker arg0) {

// TODO Auto-generated method stub

}

};

// 绑定marker拖拽事件

aMap.setOnMarkerDragListener(markerDragListener);

绘制 InfoWindow

InfoWindow 是点标记的一部分,默认的 Infowindow 只显示 Marker 对象的两个属性,一个是 title 和另一个 snippet,如果希望对InfoWindow 的样式或者内容有自定义需求,可以参考如下内容。

绘制默认 Infowindow

SDK 为用户提供了默认的 InfoWindow 样式,调用 Marker 类的 showInfoWindow() 和 hideInfoWindow() 方法可以控制显示和隐藏。当改变 Marker 的 title 和 snippet 属性时,再次调用 showInfoWindow(),可以更新 InfoWindow 显示内容。效果如下:

绘制自定义 InfoWindow

实现 InfoWindowAdapter

InfoWindowAdapter是一个接口,其中有两个方法需要实现,依次来看一下:

public interface InfoWindowAdapter {

View getInfoWindow(Marker marker);

View getInfoContents(Marker marker);

}

View getInfoWindow(Marker marker)

当实现此方法并返回有效值时(返回值不为空,则视为有效),SDK 将不会使用默认的样式,而采用此方法返回的样式(即 View)。默认会将Marker 的 title 和 snippet 显示到 InfoWindow 中。

如果此时修改了 Marker 的 title 或者 snippet 内容,再次调用类 Marker 的 showInfoWindow() 方法,InfoWindow 内容不会更新。自定义 InfoWindow 之后所有的内容更新都需要用户自己完成。当调用 Marker 类的 showInfoWindow() 方法时,SDK 会调用 getInfoWindow(Marker marker) 方法和 getInfoContents(Marker marker) 方法(之后会提到),在这些方法中更新 InfoWindow 的内容即可。

注意:如果此方法返回的 View 没有设置 InfoWindow 背景图,SDK 会默认添加一个背景图。

View getInfoContents(Marker marker)

此方法和 getInfoWindow(Marker marker) 方法的实质是一样的,唯一的区别是:此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框。

实现 InfoWindow 样式和内容

必须要先执行如下方法:

setInfoWindowAdapter(InfoWindowAdapter);//AMap类中

然后实现如下接口方法,自定义Infowindow的内容和样式:

/**

* 监听自定义infowindow窗口的infocontents事件回调

*/

public View getInfoContents(Marker marker) {

return null;

//示例没有采用该方法。

}

View infoWindow = null;

/**

* 监听自定义infowindow窗口的infowindow事件回调

*/

public View getInfoWindow(Marker marker) {

if(infoWindow == null) {

infoWindow = LayoutInflater.from(this).inflate(

R.layout.custom_info_window, null);

}

render(marker, infoWindow);

return infoWindow;

//加载custom_info_window.xml布局文件作为InfoWindow的样式

//该布局可在官方Demo布局文件夹下找到

}

/**

* 自定义infowinfow窗口

*/

public void render(Marker marker, View view) {

//如果想修改自定义Infow中内容,请通过view找到它并修改

}

自定义 InfoWindow 效果如下:

可触发的 InfoWindow 事件

InfoWindow 点击事件

点击 InfoWindow 时会回调 AMap.OnInfoWindowClickListener,监听器的实现示例如下:

OnInfoWindowClickListener listener = new OnInfoWindowClickListener() {

@Override

public void onInfoWindowClick(Marker arg0) {

arg0.setTitle("infowindow clicked");

}

};

//绑定信息窗点击事件

aMap.setOnInfoWindowClickListener(listener);

java地图上标记_绘制点标记-在地图上绘制-开发指南-Android 地图SDK | 高德地图API...相关推荐

  1. 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...

    以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...

  2. android高德地图上加自定义菜单,自定义UI控件-UI界面定制-开发指南-Android 导航SDK | 高德地图API...

    关于自定义 UI 布局,您还可以参考官方Demo--完全自定义UI导航. 单元素自定义 可以通过AMapNaviViewOptions中如下接口进行单UI元素显示隐藏,只列出部分接口,更多功能请参考A ...

  3. android 地图导航开发思路,基础功能-导航组件-开发指南-Android 导航SDK | 高德地图API...

    预置条件 请在您工程的 AndroidManifest.xml 中配置声明导航组件 Activity: android:name="com.amap.api.navi.AmapRouteAc ...

  4. php 开发高德地图地理围栏,地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...

    以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...

  5. 高德地图android 测试,平行路检测-专业导航-开发指南-Android 导航SDK | 高德地图API...

    基本介绍 导航SDK从v6.6.0开始,平行路检测支持"主辅路状态检测"和"高架桥上下状态检测".当用户所在的位置,具有两条相邻的平行路,如城市快速路的主干道和 ...

  6. PHP地图规划骑行路径,骑行路线规划-路线规划-开发指南-iOS 导航SDK | 高德地图API...

    基本介绍 要实现骑行路径规划功能,以下三个类您需要了解:AMapNaviRideManager 是骑行导航管理类,提供路线规划.行前选路.导航中重算等方法.注意:从导航SDK7.4.0开始,AMapN ...

  7. android高德地图线路,独立路径规划-路线规划-开发指南-Android 导航SDK | 高德地图API...

    基本介绍 独立路径规划是指路径规划的结果不会自动应用于当前导航,也不会干扰当前的导航,需要手动调用API传入路径规划结果来开始导航.可用于不干扰本次导航的单独路径规划场景,比如路线预览等.适用于驾车/ ...

  8. android 双导航组件,高级功能-导航组件-开发指南-Android 导航SDK | 高德地图API

    导航组件的配置类 AmapNaviParams中提供了很多配置方法,支持在启动同时传入,满足自定义需求. 启动相关配置 如果已经在外部通过AMapNavi计算过一条路线,可以选择启动组件不进行重新算路 ...

  9. android双导航功能,高级功能-导航组件-开发指南-Android 导航SDK | 高德地图API

    导航组件的配置类 AmapNaviParams中提供了很多配置方法,支持在启动同时传入,满足自定义需求. 启动相关配置 如果已经在外部通过AMapNavi计算过一条路线,可以选择启动组件不进行重新算路 ...

  10. java 高德地图路线规划_公交出行路线规划-出行路线规划-开发指南-Android 地图SDK | 高德地图API...

    公交路径规划可以根据起终点和公交换乘的数据,使用 BusRouteOverlay 画出公交路线图层,包括起终点和换乘点.另外也可以自定义起终点和换乘点的图标. 目前支持跨城公交路线规划,提供不同城市之 ...

最新文章

  1. 最佳适应算法的计算方法
  2. 年薪 50 万!淘宝重金招聘,35 岁以上优先,学历不限
  3. 从Storm到Flink:大数据处理的开源系统及编程模型
  4. Django不能ip调试访问
  5. 阿里云的linux服务器简单部署网站80端口
  6. 复制Excel分类汇总结果的三种方法
  7. AI未成解药 流利说2019年净亏5.75亿 Q4付费用户再降20万
  8. TestNG+Maven+IDEA 自动化测试(一) 环境搭建
  9. HDU4675【GCD of scequence】【组合数学、费马小定理、取模】
  10. 32岁了,我有机会转行做程序员吗?——Leo网上答疑(1)
  11. 印度成不了下一个世界工厂,越南才可能
  12. 实现财务自由的十大步骤
  13. ps—添加、去除水印
  14. [欧范 必备]帅气 中性 军色 工装 铜扣勋章 休闲衬衣 男女通款
  15. 阿里总结的《Java成神之路》 PDF 火了,完整版开放下载!
  16. 【干货】APP解构重构,让你用户不再流失
  17. 【转载】C#中List集合First和FirstOrDefault方法有何不同
  18. GitLab 服务搭建
  19. 在虚拟环境下使用pip install -r requirements.txt导入项目依赖包却没有安装上出现的问题
  20. 复利的谎言,很多人都中圈套了!!

热门文章

  1. 在CentOS7上部署Apache Mesos
  2. Centos7 下 配置 rsync 以及 rsync+inotify 实时同步
  3. js控制表格隔行变色
  4. 9.QT-标准对话框
  5. No modifications are allowed to a locked ParameterMap
  6. selector与layer-list 单边框效果
  7. 工厂模式(Factory)(转)
  8. php 所有魔术方法,PHP常用的魔术方法及规则
  9. php dropdownlist,为何activitieDropdownlist的值始终无法获取到
  10. 深入浅出谈以太坊智能合约