springboot实现调用百度地图接口并标记
时间: 2024-06-01 18:02:58 浏览: 228
调用百度地图
3星 · 编辑精心推荐
首先,你需要在百度地图开放平台申请一个开发者账号并创建一个应用,获取到应用的AK(Access Key)。
然后,在Spring Boot项目中,你可以使用HttpClient或者RestTemplate来调用百度地图接口并获取返回结果。具体实现步骤如下:
1. 添加HttpClient或RestTemplate相关依赖。
2. 创建一个POJO类来封装百度地图API返回的数据,例如:
```java
public class BaiduMapResponse {
private int status;
private String message;
private List<Marker> markers;
// getters and setters
}
public class Marker {
private double longitude;
private double latitude;
private String title;
// getters and setters
}
```
3. 创建一个Service类来调用百度地图API,例如:
```java
@Service
public class BaiduMapService {
private static final String BAIDU_MAP_API_URL = "http://api.map.baidu.com/place/v2/search";
private static final String AK = "your_access_key_here";
public List<Marker> search(String query, String region) {
RestTemplate restTemplate = new RestTemplate();
String url = String.format("%s?query=%s®ion=%s&output=json&ak=%s", BAIDU_MAP_API_URL, query, region, AK);
BaiduMapResponse response = restTemplate.getForObject(url, BaiduMapResponse.class);
if (response.getStatus() == 0) {
return response.getMarkers();
} else {
throw new RuntimeException("Failed to search on Baidu Map API: " + response.getMessage());
}
}
}
```
4. 在Controller中调用BaiduMapService,并将返回的Marker列表传递给前端页面进行标记。例如:
```java
@Controller
public class MapController {
@Autowired
private BaiduMapService baiduMapService;
@GetMapping("/search")
public String search(@RequestParam("query") String query, @RequestParam("region") String region, Model model) {
List<Marker> markers = baiduMapService.search(query, region);
model.addAttribute("markers", markers);
return "map";
}
}
```
5. 在前端页面使用JavaScript或其他地图API库来显示地图并标记。例如,在使用百度地图JavaScript API时,可以使用如下代码:
```html
<div id="map" style="height: 600px;"></div>
<script src="http://api.map.baidu.com/api?v=2.0&ak=your_access_key_here"></script>
<script>
var map = new BMap.Map("map");
map.centerAndZoom("北京", 12);
var markers = /*[[${markers}]]*/ [];
for (var i = 0; i < markers.length; i++) {
var marker = new BMap.Marker(new BMap.Point(markers[i].longitude, markers[i].latitude));
marker.setTitle(markers[i].title);
map.addOverlay(marker);
}
</script>
```
以上就是在Spring Boot项目中调用百度地图API并标记的基本步骤。当然,具体实现方式还需要根据你的实际需求和项目结构进行调整。
阅读全文