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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)


相关推荐

  • C语言数组反转

    C语言数组反转一个C语言程序代码,反转数组。题目:编写一个函数,实现传入的整型数据各位数字的逆序重排,比如:传入1278,函数返回值为8721;传入-257,函数返回值为-752;传入510,函数返回值为15。#include<stdio.h>#include<stdlib.h>#include<math.h>#definemaxArraySize100//定义数组最大长度,防止输入的整型数据超出int表示的范围intinverseIntAr

  • 教你用JAVA写个小游戏[通俗易懂]

    教你用JAVA写个小游戏[通俗易懂]上周上课的时候老师让用Java写个小程序,我本想写一个经典的飞机大战游戏来着,可以后来突发奇想就写成了这个一、整体思路继承窗体类,复写窗体刷新 添加按键监听 游戏结束界面 王思聪类和热狗类移动轨迹计算 判断碰撞音乐播放 不断刷新窗体处理细节二、编码1.图片首先你要找到图片,可以百度一张,然后用ps切开,再找一张背景图片就搞定了你还需要一个加载图片的…

  • 掌握JedisPoolConfig参数配置,学会调优技能

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!你好,JedisPoolConfigJava中…

  • js 的forEach 如何跳出循环「建议收藏」

    js 的forEach 如何跳出循环「建议收藏」forEach()方法用于调用数组的每个元素,并将元素传递给回调函数。对于空数组不会执行回调函数回调函数的参数function(currentValue,index,arr)currentValue必需。当前元素index可选。当前元素的索引值…

  • Http请求URL长度限制[通俗易懂]

    Http请求URL长度限制[通俗易懂]http1.1协议原文http1.1协议中对url的长度是不受限制的,协议原文://https://www.ietf.org/rfc/rfc2616.txt3.2.1GeneralSyntax TheHTTPprotocoldoesnotplaceanyapriorilimitonthelengthofaURI.ServersM…

  • leetcode数组汇总_环形数组

    leetcode数组汇总_环形数组原题链接给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k1 % A.leng

发表回复

您的电子邮箱地址不会被公开。

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