高德开发者论坛
标题: 自定义 定位按钮 实现 [打印本页]
作者: zhengxiangyu 时间: 2016-3-18 18:52
标题: 自定义 定位按钮 实现
本帖最后由 郑翔宇er 于 2016-3-18 18:59 编辑
最近发现论坛上有很多人问题,自定义定位按钮的问题,所以说明一下,这个自定义究竟是怎么自定义的
主要有这么几个问题
1.创建地图;
2.创建自定义定位的按钮
3.使用定位;
4.修改定位图标以及移动到定位点;
1. 创建地图
创建地图主要参考地图demo,底部有官网demo下载链接
2.创建自定义定位的按钮
很多同学对于这个定位按钮是如何放置地图上的表示很神奇,这个定位按钮是飘在地图上面的。
其实使用RelativeLayout可以分分钟解决,先放一个MapView,再放一个Button就可以了
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
- <com.amap.api.maps.MapView
- android:id="@+id/map"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- </com.amap.api.maps.MapView>
- <!-- 自定义按钮位置,具体可以通过margin_left 和 top来确定-->
- <Button
- android:id="@+id/location_bt"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dp"
- android:layout_marginTop="10dp"
- android:text="Location"/>
- </RelativeLayout>
复制代码
3.使用定位
写的太详细了,简单说明几个地方,底部有全部代码
记得添加key,
记得在设置定位service,
记得加定位权限
4.修改定位图标以及移动到定位点
在设置好了定位相关问题,点击定位之后,会回调public voidonLocationChanged(AMapLocation amapLocation)
这里面有个AMapLocation参数,我们需要通过这个方法获取定位的经纬度,好添加定位Marker 请看这里。Ps:如果想在定位周围画个圈,使用amap.addCircle即可
- if (amapLocation != null) {
- if (amapLocation.getErrorCode() == 0) {
- //定位成功回调信息,设置相关消息
- //取出经纬度
- LatLng latLng = new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude());
- //添加Marker显示定位位置
- if (locationMarker == null) {
- //如果是空的添加一个新的,icon方法就是设置定位图标,可以自定义
- locationMarker = aMap.addMarker(new MarkerOptions()
- .position(latLng)
- .icon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker)));
- } else {
- //已经添加过了,修改位置即可
- locationMarker.setPosition(latLng);
- }
- //然后可以移动到定位点,使用animateCamera就有动画效果
- aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
- } else {
- //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
- Log.e("AmapError", "location Error, ErrCode:"
- + amapLocation.getErrorCode() + ", errInfo:"
- + amapLocation.getErrorInfo());
- }
- }
复制代码
amapLocation.getLatitude()是获取纬度,
amapLocation.getLongitude()是获取经度
aMap.addMarker 就是添加定位小蓝点,图片资源在底部
aMap.animateCamear就是移动到定位点,如果不想定位成功了移动到定位点,那就可以在这里处理,不加这行就可以了。
地图官方demo及jar包下载地址
定位官方demo及jar包下载地址
作者: my0713206 时间: 2016-3-18 19:00
棒棒哒
作者: amapVU5esHdc 时间: 2016-3-22 14:04
非常感谢
作者: amap_1318456539 时间: 2016-3-25 17:53
没有iOS的吗
作者: zhengxiangyu 时间: 2016-3-26 16:41
ios的啊,我去找一下ios的同事,看他们有没有类似的说明
作者: amap_1305816052 时间: 2016-4-1 18:16
亲,你这个没有跟随,普通,旋转三种模式哦,可以考虑下怎么实现
作者: amapKFwkQITj 时间: 2016-7-3 22:22
每次拖动一下地图就会自动回到中心点
作者: toodoo 时间: 2016-12-23 19:41
这个定位方法有延时,有个定位的时差,不如自带的定位按钮定位速度快,自带的按钮点击立刻就能返回,不知道原生的是调用的什么方法??
作者: amapHtmSfcWE 时间: 2017-3-22 09:20
这个功能你实现了吗?发现自带按钮的就是秒定
作者: amapxDiRtErd 时间: 2017-4-10 18:03
这个怎么一直自动定位
作者: amap_1762036430 时间: 2017-4-17 14:04
如何不让它自动定位呢
作者: amap_1320267199 时间: 2017-5-16 15:24
怎么在创建视图方法(onCreate())里 每次进入的时候不会自动刷新定位,只有点击按钮才会定位??
作者: amap_1882506051 时间: 2017-6-4 11:26
其实这个直接用地图SDK的定位蓝点不就行了么?
作者: amapAbKRWIB7N 时间: 2017-9-23 11:13
你好,你是怎么解决的啊
作者: a823110660 时间: 2017-10-10 16:53
这个其实就是不停的定位,然后 一个全局的mLatlng,定位成功就mLatlng=定位的经纬度,点按钮时,只需要animateCamera到mLatLng就可以了
作者: amap_1760071015 时间: 2018-4-11 23:11
现在没有import com.amap.api.location.AMapLocationListener;这个类了??替换类是什么?
作者: amap_1851672059 时间: 2018-8-28 16:43
怎么样才能让他一进去就自动定位呢,我照着源码做了以后,就不能自己自动定位了,必须要点击按钮才有用,新手一个,求指导。
作者: amapAkPz6k33C 时间: 2018-9-19 18:33
调整蓝点的刷新方式,调为单次定位,不刷新
欢迎光临 高德开发者论坛 (https://lbsbbs.amap.com/) |
Powered by Discuz! X3.2 |