zhengxiangyu 发表于 2016-3-18 18:52:48

自定义 定位按钮 实现

本帖最后由 郑翔宇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.使用定位使用定位,主要参考http://lbs.amap.com/api/android-location-sdk/guide/startlocation/写的太详细了,简单说明几个地方,底部有全部代码记得添加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包下载地址http://lbs.amap.com/api/android-sdk/down/定位官方demo及jar包下载地址http://lbs.amap.com/api/android-location-sdk/download/

amapKFwkQITj 发表于 2016-7-3 22:22:58

每次拖动一下地图就会自动回到中心点

amapxDiRtErd 发表于 2017-4-10 18:03:42

这个怎么一直自动定位

my0713206 发表于 2016-3-18 19:00:05

:victory:棒棒哒

amapVU5esHdc 发表于 2016-3-22 14:04:56

非常感谢

amap_131****539 发表于 2016-3-25 17:53:30

没有iOS的吗:Q

zhengxiangyu 发表于 2016-3-26 16:41:22

淡墨寒 发表于 2016-3-25 17:53
没有iOS的吗

ios的啊,我去找一下ios的同事,看他们有没有类似的说明

amap_130****052 发表于 2016-4-1 18:16:56

亲,你这个没有跟随,普通,旋转三种模式哦,可以考虑下怎么实现

toodoo 发表于 2016-12-23 19:41:00

这个定位方法有延时,有个定位的时差,不如自带的定位按钮定位速度快,自带的按钮点击立刻就能返回,不知道原生的是调用的什么方法??

amapHtmSfcWE 发表于 2017-3-22 09:20:41

toodoo 发表于 2016-12-23 19:41
这个定位方法有延时,有个定位的时差,不如自带的定位按钮定位速度快,自带的按钮点击立刻就能返回,不知道 ...

这个功能你实现了吗?发现自带按钮的就是秒定
页: [1] 2
查看完整版本: 自定义 定位按钮 实现