第三方地图封装(基于腾讯地图)

1.MapApiController

3f9931215913416a807d42b3aac5c3b1.png

 <!-- 腾讯地图接口-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.26</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
package com.appapi.app.api.controller;

import com.appapi.comm.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: 文君
 * @Date: 2023-08-01-9:03
 * @Description:
 */
@Slf4j
@RestController
@RequestMapping("/map")
@Api(tags = "腾讯地图api")
public class MapApiController {
    /**
     * @Description 腾讯地图api配置开始
     * @Param null
     * @Return {@link null}
     * @Author wenjun
     * @Date 2023/8/30 11:39
     */
    @Value("${map.url}")
    private String url;
    @Value("${map.mapApi}")
    private String mapApi;
    //请求头
    @Autowired
    private HttpHeaders httpHeaders;

    /**
     * @Description 地点搜索
     * @Param keyword
     * @Return {@link R< Object>}
     * @Author wenjun
     * @Date 2023/8/23 15:51
     */
    @GetMapping("/search")
    @ApiOperation("地点搜索")
    @ApiImplicitParams({
            @ApiImplicitParam(name="keyword", value="地点搜索", required = true, dataType="Integer", paramType="path")
    })
    public R<Object> getsearch(@RequestParam String keyword){
        RestTemplate restTemplate=new RestTemplate();
        String api=url+"place/v1/search?boundary=nearby(40.040589,116.273543,1000)&key="+mapApi+"&keyword="+keyword;
        Object obj=restTemplate.getForObject(api,Object.class);//此处三个参数分别是请求地址、请求体以及返回参数类型
        return R.success(obj);
    }

    /**
     * @Description 关键词搜索提示
     * @Param
     * @Return {@link Object}
     * @Author wenjun
     * @Date 2023/8/1 9:19
     */
    @GetMapping("/suggestion/{name}")
    @ApiOperation("关键词搜索提示")
    @ApiImplicitParams({
            @ApiImplicitParam(name="name", value="关键词搜索", required = true, dataType="Integer", paramType="path")
    })
    public R<Object> getsuggestion(@PathVariable String name){
        RestTemplate restTemplate=new RestTemplate();
        //创建请求体并添加数据
        HttpEntity httpEntity = new HttpEntity(httpHeaders);
        String api = url+"place/v1/suggestion?key={key}&keyword={keyword}";
        //携带参数POST
        //MultiValueMap<String,String> map=new LinkedMultiValueMap<>();
        //map.add("name", "1231");
        //GET
        Map<String, Object> map = new HashMap<>();
        map.put("key",mapApi);
        map.put("keyword",name);
        //后获取数据
        //Object obj=restTemplate.exchange(api,HttpMethod.GET,httpEntity,Object.class,map);
        Object obj=restTemplate.getForObject(api,Object.class,map);//此处三个参数分别是请求地址、请求体以及返回参数类型
        //log.info(obj.toString());
        return R.success(obj);
    }

    /**
     * @Description 逆地址解析(坐标位置描述)
     * @Param list
     * @Return {@link R< Object>}
     * @Author wenjun
     * @Date 2023/8/23 15:36
     */
    @PostMapping("/getlocation")
    @ApiOperation("逆地址解析(坐标位置描述)")
    public R<Object> getlocation(@RequestBody String [] list){
        RestTemplate restTemplate=new RestTemplate();
        //创建请求体并添加数据
        HttpEntity httpEntity = new HttpEntity(httpHeaders);
        String api=url+"geocoder/v1/?location={location}&key={key}";
        //GET
        Map<String, Object> map = new HashMap<>();
        map.put("key",mapApi);
        map.put("location",list);
        Object obj=restTemplate.getForObject(api,Object.class,map);//此处三个参数分别是请求地址、请求体以及返回参数类型
        return R.success(obj);
    }

    /**
     * @Description 地址解析(地址转坐标)
     * @Param address
     * @Return {@link R< Object>}
     * @Author wenjun
     * @Date 2023/8/23 15:37
     */
    @GetMapping("/getaddress")
    @ApiOperation("地址解析(地址转坐标)")
    @ApiImplicitParams({
            @ApiImplicitParam(name="address", value="请输入地址", required = true, dataType="Integer", paramType="path")
    })
    public R<Object> getaddress(@RequestParam String address){
        RestTemplate restTemplate=new RestTemplate();
        //创建请求体并添加数据
        HttpEntity httpEntity = new HttpEntity(httpHeaders);
        String api=url+"geocoder/v1/?address={address}&key={key}";
        //GET
        Map<String, Object> map = new HashMap<>();
        map.put("key",mapApi);
        //22.95276,113.666417
        map.put("address",address);
        Object obj=restTemplate.getForObject(api,Object.class,map);//此处三个参数分别是请求地址、请求体以及返回参数类型;
        return R.success(obj);
    }

    /**
     * @Description IP定位
     * @Param
     * @Return {@link R< Object>}
     * @Author wenjun
     * @Date 2023/8/23 15:37
     */
    @GetMapping("/getIP")
    @ApiOperation("IP定位")
    public R<Object> getIP(){
        RestTemplate restTemplate=new RestTemplate();
        String api=url+"location/v1/ip?key="+mapApi;
        Object obj=restTemplate.getForObject(api,Object.class);//此处三个参数分别是请求地址、请求体以及返回参数类型
        return R.success(obj);
    }

    /**
     * @Description 腾讯地图api配置结束
     * @Param null
     * @Return {@link null}
     * @Author wenjun
     * @Date 2023/8/30 11:39
     */

}

2.R

package com.appapi.comm;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author: 文君
 * @Date: 2023-07-25-15:54
 * @Description:
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("响应信息主体")
public class R<T>{
    @ApiModelProperty("状态码")
    private Integer code;
    @ApiModelProperty("说明")
    private String message;
    @ApiModelProperty("data")
    private T data;
    /*
     * 成功
     */
    //全部成功
    public static <T> R<T> success(Integer code,String message,T data){ return new R<>(code,message,data); }
    //成功&提示
    public static <T> R<T> success(String message,T data){
        return new R<>(200,message,data);
    }
    //成功
    public static <T> R<T> success(T data){
        return new R<>(200,"success",data);
    }
    //请求成功默认
    public static <T> R<T> success(){
        return new R<>(200,"success",null);
    }
    /*
     * 失败
     */
    //全部失败
    public static <T> R<T> fail(Integer code,String message){
        return new R<>(code,message,null);
    }
    //失败提示
    public static <T> R<T> fail(String message){
        return new R<>(403,message,null);
    }
    //请求成功默认
    public static <T> R<T> fail(){
        return new R<>(403,"fail",null);
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值