高德地图的定位功能的实现

1、步骤一:导入jar包
(1)在eclipse中导入jar的方式:将解压后的jar包和”armeabr”文件夹一起拷贝到libs中
这里写图片描述
(2)在Android Studio中导入的方式:jar包导入libs目录下,并进行add as library,在main下面创建一个jniLibs文件夹,然后把”armeabr”文件夹拷贝到jniLibs文件夹中,如图所示:
这里写图片描述

2、步骤二:在AndroidManifest.xml中配置
(1)声明Service组件

(2)声明权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

(3)在application下进行配置申请高德地图的appkey权限
<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key      

</meta-data>

3、步骤三:在Activity中的代码:

(1)拷贝成员变量:

    private AMap aMap;
    private OnLocationChangedListener mListener;
    private AMapLocationClient mlocationClient;
    private AMapLocationClientOption mLocationOption;

(2)创建定位对象,并设置一些属性

//得到map地图的对象
aMap = mMapView.getMap();
// 是否显示定位按钮
aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
aMap.setLocationSource(this);// 设置定位监听
aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
    aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
// 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种
aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
(3)实现监听,重写定位的方法
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
    if (mListener != null && aMapLocation != null) {
        if (aMapLocation != null
                && aMapLocation.getErrorCode() == 0) {
            mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点
            double latitude = aMapLocation.getLatitude();
            double longitude = aMapLocation.getLongitude();
            Log.e("tag","latitude="+latitude+"longitude"+longitude);
        } else {
            String errText = "定位失败," + aMapLocation.getErrorCode()+ ": " + aMapLocation.getErrorInfo();
            Log.e("AmapErr",errText);

        }
    }
}

    /**
     * 激活定位的方法
     * @param onLocationChangedListener
     */
    @Override
    public void activate(OnLocationChangedListener onLocationChangedListener) {
        mListener = onLocationChangedListener;
        if (mlocationClient == null) {
            mlocationClient = new AMapLocationClient(this);
            mLocationOption = new AMapLocationClientOption();
            //设置定位监听
            mlocationClient.setLocationListener(this);
            //设置为高精度定位模式
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //设置定位参数
            mlocationClient.setLocationOption(mLocationOption);
            // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
            // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
            // 在定位结束后,在合适的生命周期调用onDestroy()方法
            // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
            mlocationClient.startLocation();
        }
    }

@Override
public void deactivate() {
    mListener = null;
    if (mlocationClient != null) {
        mlocationClient.stopLocation();
        mlocationClient.onDestroy();
    }
    mlocationClient = null;
}   

注意:在实现基础地图上进行实现定位功能。

Vue高德地图定位按钮功能实现可以分为以下几个步骤: 1. 引入高德地图的JavaScript SDK库。在Vue的项目中,可以通过npm安装amap-jsapi-loader库,并在入口文件(如main.js)中导入并使用该库加载高德地图的JS API。 2. 在Vue组件中创建地图容器。可以使用AMap.Map()方法创建一个地图的实例并指定容器的id,例如:new AMap.Map('map-container')。 3. 创建定位按钮并绑定相应的点击事件。在Vue组件的template中添加一个按钮元素,并为其添加一个@click事件监听器,用来触发定位功能实现。 4. 实现定位功能。在点击定位按钮时,触发点击事件的处理函数,在该函数中调用高德地图定位服务API,如AMap.Geolocation()来获取当前位置的经纬度。 5. 将定位的经纬度设置为地图的中心点,并在地图上显示一个标记点。可以使用AMap.Marker()创建一个标记点实例,然后设置其position为定位的经纬度,并添加到地图上。 6. 可以根据需要,将经纬度转换为具体的地址信息,并在页面中显示。可以使用AMap.Geocoder()的逆地理编码功能,将经纬度转换为地址。 具体代码示例: ```vue <template> <div> <button @click="getLocation">定位</button> <div id="map-container"></div> <div>{{location}}</div> </div> </template> <script> import AMapLoader from 'amap-jsapi-loader'; export default { data() { return { map: null, location: '' } }, mounted() { AMapLoader.load({ key: 'your-amap-api-key', version: '2.0' }).then(() => { this.map = new AMap.Map('map-container'); }); }, methods: { getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition((position) => { const { latitude, longitude } = position.coords; this.map.setCenter([longitude, latitude]); new AMap.Marker({ position: [longitude, latitude], map: this.map }); const geocoder = new AMap.Geocoder(); geocoder.getAddress([longitude, latitude]).then((result) => { this.location = result.regeocode.formattedAddress; }); }); } else { alert('浏览器不支持定位功能'); } } } }; </script> ``` 需要注意的是,代码中的'your-amap-api-key'需要替换为你自己申请的高德地图API的秘钥。另外,在使用定位功能时,需要用户授权浏览器获取其位置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值