1.MapApiController
<!-- 腾讯地图接口-->
<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);
}
}