android高德地图中心点,高德地图中心点以及自定义infowindow[通俗易懂]

android高德地图中心点,高德地图中心点以及自定义infowindow[通俗易懂]jdfw.gif基本效果图就是这个样子,录制这个软件不太好使,每次切换地点是点击确定变更的。接下来就看看地图上的功能是如何实现的:实现的方式编写自定义的infowindow一,书写布局样式(自定义随意写)android:layout_width=”match_parent”android:layout_height=”match_parent”android:background=”@drawab…

大家好,又见面了,我是你们的朋友全栈君。

de841923640b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

jdfw.gif

基本效果图就是这个样子,录制这个软件不太好使,每次切换地点是点击确定变更的。接下来就看看地图上的功能是如何实现的:

实现的方式

编写自定义的infowindow

一,书写布局样式(自定义随意写)

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:background=”@drawable/s_box”>

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

android:id=”@+id/tv_name”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:maxEms=”18″

android:paddingBottom=”3dp”

android:paddingLeft=”10dp”

android:paddingTop=”3dp”

android:text=”定位中” />

android:id=”@+id/tv_submit”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:layout_marginLeft=”20dp”

android:padding=”5dp”

android:paddingBottom=”3dp”

android:paddingRight=”10dp”

android:paddingTop=”3dp”

android:text=”确定”

android:textColor=”@color/colorAccent” />

二,初始化布局的引用

private View infoWindow = null;(成员变量)

//引用刚才书写的自定义布局

infoWindow = LayoutInflater.from(this).inflate(R.layout.custom_info_window, null);

tv_name = infoWindow.findViewById(R.id.tv_name);//左侧地址的显示

tv_submit = infoWindow.findViewById(R.id.tv_submit);//右侧确定按钮

上满是初始化的自定义infowindow展示的效果。但是在展示之前需要先优先实现自定义的marker和中心点坐标地理逆向编码。

三,自定义的marker设置

重写地图加载完毕的方法,在地图加载完毕之后调用添加marker

/**

* 地图加载完成回调

*/

@Override

public void onMapLoaded() {

addMarkerInScreenCenter();

}

/**

* 添加选点marker

*/

private Marker locationMarker;

private void addMarkerInScreenCenter() {

LatLng latLng = aMap.getCameraPosition().target;

Point screenPosition = aMap.getProjection().toScreenLocation(latLng);

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

.icon(BitmapDescriptorFactory.fromResource(R.drawable.bqdw_icon)));

//设置Marker在屏幕上,不跟随地图移动

locationMarker.setPositionByPixels(screenPosition.x, screenPosition.y);

locationMarker.showInfoWindow();

}

四,展示InfoWindow

需要给infowindow设置监听

aMap = mapView.getMap();

aMap.setInfoWindowAdapter(this);//主要监听

aMap.setOnInfoWindowClickListener(listener);//点击监听,自己看

实现监听后,重写以下方法

/**

* 自定义infoWindow窗口

*/

@Override

public View getInfoWindow(Marker marker) {

render(infoWindow);

return infoWindow;

}

/**

* 自定义infoWindow窗口

*/

@Override

public View getInfoContents(Marker marker) {

render(infoWindow);

return infoWindow;

}

/**

* 自定义infoWindow窗口

*/

public void render(View view) {

tv_submit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

/*

确定做点击的操作什么的。我这边不做处理

*/

}

});

}

五,关于中心点移动获取地点

先要实现监听

aMap.setOnCameraChangeListener(this);

书写监听后,重写监听方法

private LatLng currentTarget;

@Override

public void onCameraChange(CameraPosition cameraPosition) {

LatLng target = cameraPosition.target;

uploadEvent.setLatitude(target.latitude + “”);//这是我的model用来获取数据

uploadEvent.setLongitude(target.longitude + “”);//这是我的model用来获取数据

LatLonPoint latLonPoint = new LatLonPoint(target.latitude, target.longitude);

//逆地理编码,通过经纬度获取地理位置

RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200, GeocodeSearch.AMAP);

geocoderSearch.getFromLocationAsyn(query);//逆向对象,下一步给初始化

}

/**

* 地图移动结束回调

*

*/

@Override

public void onCameraChangeFinish(CameraPosition cameraPosition) {

currentTarget = cameraPosition.target;

}

六,逆向地理编码对象初始化

private GeocodeSearch geocoderSearch;

geocoderSearch = new GeocodeSearch(this);

geocoderSearch.setOnGeocodeSearchListener(this);

设置监听后,重写方法

/*

地图中心点经纬度 转换 地理位置。 经纬度转地址。

@params tv_name infowindow 显示的地址

code 默认1000

*/

@Override

public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int code) {

if (code == 1000 && regeocodeResult != null) {

//逆向地理地址

address = regeocodeResult.getRegeocodeAddress().getFormatAddress();

if (!TextUtils.isEmpty(address)) {

tv_name.setText(address);

}

}

}

@Override

public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {

}

以上基本就是关于地图的一些设置, 有关于地图的配置什么的, 请自行阅读高德官方api。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145008.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一分钟制作U盘版BT3 – 有图滴儿 bt3激活成功教程教程

    一分钟制作U盘版BT3 – 有图滴儿 bt3激活成功教程教程一分钟制作BT3U盘版方便,快捷简单无效不退款光盘版BT3,大概694MB,直接刻盘,然后用光盘引导,就可以进入bt3,连接为:http://ftp.heanet.ie/mirrors/back

    2022年7月2日
    29
  • linux gstack_linux最常用命令

    linux gstack_linux最常用命令pstack:pstack命令可显示每个进程的栈跟踪。pstack命令必须由相应进程的属主或root运行。可以使用pstack来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的PID。pstack看活动的进程内的堆栈用法:root#pstackPIDgstack:

    2022年9月14日
    2
  • 大数据经典案例有哪些?

    大数据经典案例有哪些?“互联网还没搞清楚的时候,移动互联就来了移动互联还没搞清楚的时候,大数据就来了”。近两年,“大数据”这个词越来越为大众所熟悉,“大数据”一直是以高冷的形象出现在大众面前,面对大数据,相信许多人都一头雾水。下面我们通过几个经典案例,让大家实打实触摸一把“大数据”。你会发现它其实就在身边而且也是很有趣的。1.啤酒与尿布全球零售业巨头沃尔玛在对消费者购物行为分析时发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒来犒劳自己,于是尝试推出了将啤酒和尿布摆在一起的促销手段。没想到这个举措居然使尿布

    2022年5月2日
    46
  • 你为什么推荐java核心技术_读《java核心技术卷一》有感

    你为什么推荐java核心技术_读《java核心技术卷一》有感过去一个多月了吧 才囫囵吞枣地把这书过了一遍 话说这书也够长的 一共 706 页 我从来不是个喜欢记录的人 一直以来看什么书都是看完了就扔一边去 可能有时候有那么一点想记录下来的冲动 但算算时间太紧 很多也是有始无终 毕竟在之前研究研究程序也只是自己的一个爱好而已 但没有想到签了一个程序员的工作 唉 这老天也太捉弄人了吧 让一个学电气工程 电力电子方向 学生毕业之后去写代码 而且是与硬件完全无关的代码

    2025年8月20日
    1
  • idea替换文本快捷键_idea 替换整个项目某个单词

    idea替换文本快捷键_idea 替换整个项目某个单词ctrl+f是查找,ctrl+r是替换1、“ctrl+r”快捷键,用于当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件;2、“ctrl+shift+r”快捷键,用于在路径中替换。

    2022年9月1日
    6
  • 什么是中断?_中断方式的特点

    什么是中断?_中断方式的特点中断通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断分为同步中断和异步中断。同步中断——同步中断是当指令执行时由控制单元产生

    2022年8月1日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号