How to use Java to obtain the detailed address information of a specified location on Baidu Map?
With the continuous development of the Internet, map services have become one of the necessary tools in our daily lives. As one of the largest map service platforms in China, Baidu Maps provides a rich API interface to facilitate developers to obtain map-related data. This article will introduce how to use Java programming language to obtain detailed address information of a specified location through Baidu Map API.
First, we need to prepare the development environment. Make sure that Java development tools have been installed and corresponding third-party libraries have been added, such as Apache HttpClient, FastJson, etc.
Next, we can create a new Java class named BaiduMapAddressUtil to encapsulate the method of obtaining address information. Corresponding libraries and classes need to be introduced in this class, mainly including HttpClient and FastJson.
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.net.URI; public class BaiduMapAddressUtil { // 百度地图API密钥,需要自行申请 private static final String API_KEY = "YOUR_API_KEY"; /** * 根据经纬度获取详细地址 * @param longitude 经度 * @param latitude 纬度 * @return 详细地址 */ public static String getAddress(double longitude, double latitude) { CloseableHttpClient httpClient = HttpClients.createDefault(); try { URIBuilder uriBuilder = new URIBuilder("http://api.map.baidu.com/geocoder/v2/"); uriBuilder.addParameter("location", latitude + "," + longitude); uriBuilder.addParameter("output", "json"); uriBuilder.addParameter("ak", API_KEY); HttpGet httpGet = new HttpGet(uriBuilder.build()); HttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); String responseJson = EntityUtils.toString(entity, "UTF-8"); JSONObject jsonObject = JSON.parseObject(responseJson); if (jsonObject.containsKey("result")) { jsonObject = jsonObject.getJSONObject("result"); if (jsonObject.containsKey("formatted_address")) { return jsonObject.getString("formatted_address"); } } } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } return null; } public static void main(String[] args) { double longitude = 116.397428; double latitude = 39.90923; String address = getAddress(longitude, latitude); System.out.println("详细地址:" + address); } }
In the above code, we created a getAddress
method to get the detailed address based on latitude and longitude. In the method, first use URIBuilder
to construct the requested URL, and concatenate parameters such as latitude and longitude, output format, and API key. Then use HttpClient
to send a GET request and parse the returned result into JSON format. By judging whether the fields in JSON exist, detailed address information is finally obtained.
In the main
method, we set the longitude and latitude of an example (the center of Beijing), and then call the getAddress
method to obtain the detailed address and print it out.
It should be noted that to use Baidu Map API, you need to apply for an API key and replace it with YOUR_API_KEY
in the code.
Through the above steps, we can use the Java programming language to easily obtain the detailed address information of the specified location on Baidu Map. This method can not only be used to develop map applications, but can also be used in some scenarios where addresses need to be queried based on longitude and latitude, providing more convenient services.
The above is the detailed content of How to use Java to obtain the detailed address information of a specified location on Baidu Maps?. For more information, please follow other related articles on the PHP Chinese website!