高德定位当前位置Util

集成高德地图的时候,需要定位当前位置,这里封装了定位的功能,
方便使用,其中定位获取到的位置信息用了接口回调的方法传递出去,方便获取。

    public class LocationUtils {

    private Context mContext;
    public AMapLocationClient locationClient = null;
    private String address;
    private LocationInterface locationInterface;

    public LocationUtils(Context mContext) {
        this.mContext = mContext;
        initLocation();
    }

    /**
     * 初始化定位
     */
    private void initLocation() {
        //初始化client
        locationClient = new AMapLocationClient(mContext.getApplicationContext());
        //设置定位参数
        locationClient.setLocationOption(getDefaultOption());
        // 设置定位监听
        locationClient.setLocationListener(locationListener);
    }

    /**
     * 默认的定位参数
     */
    private static AMapLocationClientOption getDefaultOption() {
        AMapLocationClientOption mOption = new AMapLocationClientOption();
        mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //可选,设置定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式
        mOption.setGpsFirst(false);//可选,设置是否gps优先,只在高精度模式下有效。默认关闭
        mOption.setHttpTimeOut(30000);//可选,设置网络请求超时时间。默认为30秒。在仅设备模式下无效
        mOption.setInterval(2000);//可选,设置定位间隔。默认为2秒
        mOption.setNeedAddress(true);//可选,设置是否返回逆地理地址信息。默认是true
        mOption.setOnceLocation(false);//可选,设置是否单次定位。默认是false
        mOption.setOnceLocationLatest(false);//可选,设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用
        AMapLocationClientOption.setLocationProtocol(AMapLocationClientOption.AMapLocationProtocol.HTTP);//可选,
        // 设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP
        mOption.setSensorEnable(false);//可选,设置是否使用传感器。默认是false
        mOption.setWifiScan(true); //可选,设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差
        mOption.setLocationCacheEnable(true); //可选,设置是否使用缓存定位,默认为true
        return mOption;
    }


    /**
     * 定位监听
     */
    AMapLocationListener locationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation loc) {
            if (null != loc) {
                //解析定位结果
                address = loc.getCity();
                Log.e("ggg","经纬度"+loc.getLatitude()+""+loc.getLongitude());
            } else {
                address = "定位失败,loc is null";
            }

            locationInterface.addressCallBack(address);
        }
    };

    public interface LocationInterface {
        void addressCallBack(String address);
    }

    public void setCallBack(LocationInterface locationCallBack) {
        this.locationInterface = locationCallBack;
    }
}
在Spring Boot中集成高德地图获取定位的API,可按以下步骤进行: ### 1. 注册高德开发者账号并获取Key 要使用高德地图API,需先在高德开放平台注册账号,创建应用以获取API Key。此Key是调用API的凭证。 ### 2. 添加依赖 在`pom.xml`文件里添加`HttpClient`依赖,用于发送HTTP请求: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` ### 3. 创建获取定位的服务类 以下是一个示例服务类,用于调用高德地图的IP定位API: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class AmapLocationService { private static final String AMAP_IP_LOCATION_URL = "https://restapi.amap.com/v3/ip"; private static final String YOUR_API_KEY = "your_api_key"; // 替换为你自己的API Key public String getLocationByIp(String ip) throws IOException { HttpClient httpClient = HttpClients.createDefault(); String url = AMAP_IP_LOCATION_URL + "?key=" + YOUR_API_KEY + "&ip=" + ip; HttpGet httpGet = new HttpGet(url); HttpResponse response = httpClient.execute(httpGet); return EntityUtils.toString(response.getEntity()); } } ``` ### 4. 在Spring Boot中使用服务类 在Spring Boot的控制器中调用服务类: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; @RestController public class LocationController { private AmapLocationService amapLocationService = new AmapLocationService(); @GetMapping("/location") public String getLocation(@RequestParam String ip) throws IOException { return amapLocationService.getLocationByIp(ip); } } ``` ### 5. 测试 启动Spring Boot应用,访问`http://localhost:8080/location?ip=your_ip_address`(将`your_ip_address`替换为实际的IP地址),就能获取该IP地址对应的定位信息。 ### 注意事项 - 要把`YOUR_API_KEY`替换为你在高德开放平台获取的真实API Key。 - 高德地图的IP定位API有调用限制,使用时需留意API的使用规则和限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值