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)
上一篇 2022年5月18日 上午10:20
下一篇 2022年5月18日 上午10:40


相关推荐

  • Dedecms_DedeCMS提示信息

    Dedecms_DedeCMS提示信息dedecms:说这个是国内人气最旺的cms,我想没有人反对吧?中国站长站(chinaz.com),站长资讯(admin5.com),称这两个站点是大站,没人反对吧?如果你做的是个人站点,如果数据不是很大,那么dedecms依然是首选,dedecms在20w数据就会反应迟钝,有过技术文章分析的,dedecms的数据表频繁查询,导致性能不过关,但是首选你的站有多大?10w篇文章,每天发10篇那…

    2022年9月30日
    5
  • 大学四年一路自学走来,我把这些私藏的实用工具/学习网站我贡献出来了

    知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。

    2022年4月14日
    51
  • ffplay播放器原理剖析

    ffplay播放器原理剖析****************************************************************************** ffplay系列博客:                                           ** ffplay播放器原理剖析    …

    2022年6月29日
    25
  • nginx和apache、lvs区别

    nginx和apache、lvs区别对比项apachenginx简介配置简洁。负载均衡服务器,支持7层负载均衡内存及资源占用多轻量级,同样的web服务占用少稳定性超稳定不稳定,bug多进程同步进程模型异步进程模型(抗并发)处理静态文件性能好(3倍以上)性能差对PHP支持简单需要配合其他后端用rewrite功能性能好(rewrite频繁时用apache)性能差结合机制后端apache集群前端nginx抗并发Nginx轻量级,采…

    2022年6月14日
    30
  • DotNetty[通俗易懂]

    DotNetty[通俗易懂]DotNetty中几个重要的库(程序集):DotNetty.Buffers:对内存缓冲区管理的封装。DotNetty.Codecs:对编解码是封装,包括一些基础基类的实现,我们在项目中自定义的协议,都要继承该项目的特定基类和实现。DotNetty.Codecs.Mqtt:MQTT(消息队列遥测传输)编解码是封装,包括一些基础基类的实现。DotNetty.Codecs.Proto…

    2025年8月24日
    5
  • pycharm2021 5.2激活码破解方法

    pycharm2021 5.2激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    43

发表回复

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

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