springboot项目实现获取经纬度,简单实现代码
时间: 2023-12-20 12:03:14 浏览: 302
可以使用Java API获取经纬度信息,具体实现步骤如下:
1.引入相关的依赖包,如SpringBoot-starter-web和geotools等。
2.编写一个Controller,提供RESTful接口。
3.在Controller中注入一个GeocodingService,该服务用于将地址转换为经纬度。
4.编写一个简单的前端页面,用于获取用户输入的地址信息。
5.在前端页面中,使用AJAX技术将用户输入的地址信息传递到Controller中,然后调用GeocodingService将地址转换为经纬度信息,并返回给前端页面展示。
下面是一个简单的实现代码:
1.引入相关的依赖包:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>22.1</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>22.1</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geocaching</artifactId>
<version>22.1</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-wkt</artifactId>
<version>22.1</version>
</dependency>
```
2.编写一个Controller:
```java
@RestController
public class GeocodeController {
@Autowired
private GeocodingService geocodingService;
@GetMapping(value = "/geocode")
public ResponseEntity<?> getGeocode(@RequestParam String address) {
try {
Point2D.Double point = geocodingService.geocode(address);
Map<String, Object> response = new HashMap<>();
response.put("latitude", point.y);
response.put("longitude", point.x);
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
}
}
}
```
3.注入GeocodingService:
```java
@Service
public class GeocodingService {
public Point2D.Double geocode(String address) throws Exception {
Geocoder geocoder = new Geocoder();
GeocoderRequest geocoderRequest = new GeocoderRequestBuilder()
.setAddress(address)
.setLanguage("zh-CN")
.getGeocoderRequest();
GeocodeResponse geocoderResponse = geocoder.geocode(geocoderRequest);
GeocoderResult result = geocoderResponse.getResults().get(0);
LatLng location = result.getGeometry().getLocation();
return new Point2D.Double(location.getLng().doubleValue(), location.getLat().doubleValue());
}
}
```
4.编写前端页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>获取经纬度</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<form>
<label>地址:</label>
<input type="text" id="address" name="address">
<br>
<button type="button" onclick="getGeocode()">获取经纬度</button>
</form>
<br>
<div id="result"></div>
<script>
function getGeocode() {
let address = $('#address').val().trim();
if(!address){
alert('请输入地址!');
return;
}
$.ajax({
url: '/geocode?address='+encodeURI(address),
type: 'GET',
contentType: "application/json",
success: function (data) {
console.log(data);
$('#result').empty().html('经度:'+data.longitude+' 纬度:'+data.latitude);
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr);
console.log(textStatus);
console.log(errorThrown);
$('#result').empty().html(xhr.responseJSON);
}
});
}
</script>
</body>
</html>
```
以上就是一个简单的获取经纬度的实现,当用户在前端页面中输入地址后,点击“获取经纬度”按钮即可向后端发送请求,后端将地址转换成经纬度并返回给前端,最终在页面上展示出经纬度信息。
阅读全文