自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

查看: 12950|回复: 17
打印 上一主题 下一主题

[使用疑问] 自定义 定位按钮 实现

[复制链接]
最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
跳转到指定楼层
楼主
发表于 2016-3-18 18:52:48 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
发表帖子
API/SDK版本号: 3.2.1
产品: 3D地图
手机型号:
使用接口:
本帖最后由 郑翔宇er 于 2016-3-18 18:59 编辑

最近发现论坛上有很多人问题,自定义定位按钮的问题,所以说明一下,这个自定义究竟是怎么自定义的

主要有这么几个问题
1.创建地图;
2.创建自定义定位的按钮
3.使用定位;
4.修改定位图标以及移动到定位点;

1.  创建地图
创建地图主要参考地图demo,底部有官网demo下载链接
2.创建自定义定位的按钮
很多同学对于这个定位按钮是如何放置地图上的表示很神奇,这个定位按钮是飘在地图上面的。
其实使用RelativeLayout可以分分钟解决,先放一个MapView,再放一个Button就可以了
  1. <RelativeLayout
  2.     xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     >

  6.     <com.amap.api.maps.MapView
  7.         android:id="@+id/map"
  8.         android:layout_width="match_parent"
  9.         android:layout_height="match_parent" >
  10.     </com.amap.api.maps.MapView>

  11.     <!-- 自定义按钮位置,具体可以通过margin_left 和 top来确定-->
  12.     <Button
  13.         android:id="@+id/location_bt"
  14.         android:layout_width="wrap_content"
  15.         android:layout_height="wrap_content"
  16.         android:layout_marginLeft="10dp"
  17.         android:layout_marginTop="10dp"
  18.         android:text="Location"/>

  19. </RelativeLayout>
复制代码


3.使用定位
写的太详细了,简单说明几个地方,底部有全部代码
记得添加key
记得在设置定位service
记得加定位权限

4.修改定位图标以及移动到定位点
在设置好了定位相关问题,点击定位之后,会回调public voidonLocationChanged(AMapLocation amapLocation)
这里面有个AMapLocation参数,我们需要通过这个方法获取定位的经纬度,好添加定位Marker 请看这里。Ps:如果想在定位周围画个圈,使用amap.addCircle即可
  1. if (amapLocation != null) {
  2.             if (amapLocation.getErrorCode() == 0) {
  3.                 //定位成功回调信息,设置相关消息

  4.                 //取出经纬度
  5.                 LatLng latLng = new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude());

  6.                 //添加Marker显示定位位置
  7.                 if (locationMarker == null) {
  8.                     //如果是空的添加一个新的,icon方法就是设置定位图标,可以自定义
  9.                     locationMarker = aMap.addMarker(new MarkerOptions()
  10.                             .position(latLng)
  11.                             .icon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker)));
  12.                 } else {
  13.                     //已经添加过了,修改位置即可
  14.                     locationMarker.setPosition(latLng);
  15.                 }

  16.                 //然后可以移动到定位点,使用animateCamera就有动画效果
  17.                 aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));

  18.             } else {
  19.                 //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
  20.                 Log.e("AmapError", "location Error, ErrCode:"
  21.                         + amapLocation.getErrorCode() + ", errInfo:"
  22.                         + amapLocation.getErrorInfo());
  23.             }
  24.         }
复制代码



amapLocation.getLatitude()是获取纬度,
amapLocation.getLongitude()是获取经度

aMap.addMarker 就是添加定位小蓝点,图片资源在底部

aMap.animateCamear就是移动到定位点,如果不想定位成功了移动到定位点,那就可以在这里处理,不加这行就可以了。




自定义定位按钮.zip (373.39 KB, 下载次数: 1248)

地图官方demojar包下载地址
定位官方demojar包下载地址

回复

使用道具 举报

最佳答案
0 

2

主题

3

帖子

26

积分

新手上路

Rank: 1

积分
26
推荐
发表于 2016-7-3 22:22:58 | 只看该作者
每次拖动一下地图就会自动回到中心点
回复 支持 2 反对 0

使用道具 举报

最佳答案
0 

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
推荐
发表于 2017-4-10 18:03:42 | 只看该作者
这个怎么一直自动定位
回复 支持 1 反对 0

使用道具 举报

最佳答案
0 

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
18#
发表于 2018-9-19 18:33:21 | 只看该作者
615'空间 发表于 2016-7-3 22:22
每次拖动一下地图就会自动回到中心点

调整蓝点的刷新方式,调为单次定位,不刷新
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

1

帖子

10

积分

新手上路

Rank: 1

积分
10
17#
发表于 2018-8-28 16:43:09 | 只看该作者
怎么样才能让他一进去就自动定位呢,我照着源码做了以后,就不能自己自动定位了,必须要点击按钮才有用,新手一个,求指导。
回复 支持 反对

使用道具 举报

最佳答案
0 

3

主题

7

帖子

27

积分

新手上路

Rank: 1

积分
27
16#
发表于 2018-4-11 23:11:25 | 只看该作者
现在没有import com.amap.api.location.AMapLocationListener;这个类了??替换类是什么?
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

6

帖子

20

积分

新手上路

Rank: 1

积分
20
15#
发表于 2017-10-10 16:53:09 | 只看该作者
toodoo 发表于 2016-12-23 19:41
这个定位方法有延时,有个定位的时差,不如自带的定位按钮定位速度快,自带的按钮点击立刻就能返回,不知道 ...

这个其实就是不停的定位,然后 一个全局的mLatlng,定位成功就mLatlng=定位的经纬度,点按钮时,只需要animateCamera到mLatLng就可以了
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

1

帖子

10

积分

新手上路

Rank: 1

积分
10
14#
发表于 2017-9-23 11:13:41 | 只看该作者
615'空间 发表于 2016-7-3 22:22
每次拖动一下地图就会自动回到中心点

你好,你是怎么解决的啊
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
13#
发表于 2017-6-4 11:26:01 | 只看该作者
其实这个直接用地图SDK的定位蓝点不就行了么?
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

1

帖子

22

积分

新手上路

Rank: 1

积分
22
12#
发表于 2017-5-16 15:24:35 | 只看该作者
怎么在创建视图方法(onCreate())里 每次进入的时候不会自动刷新定位,只有点击按钮才会定位??
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
11#
发表于 2017-4-17 14:04:13 | 只看该作者
如何不让它自动定位呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表