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账号...

(0)
blank

相关推荐

发表回复

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

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