Java调用百度地图API
来源:互联网 发布:什么是sdk 知乎 编辑:程序博客网 时间:2024/04/28 17:01
本实战代码将使用百度地图的接口来实现以下功能:
1.确定输入地址的坐标
2.两个坐标的距离
其他的话,还要使用百度账户申请相关的api,具体见:
http://lbsyun.baidu.com/index.php?title=webapi
示例代码:
import com.alibaba.fastjson.JSON;import com.google.common.collect.ImmutableMap;import org.apache.commons.lang3.StringUtils;import org.apache.http.client.fluent.Request;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Service;import java.io.IOException;import java.util.Map;/** * 百度地图api接口调用 */@Service("geocodingService")@Transactionalpublic class GeocodingService { private static final Logger LOG = LoggerFactory.getLogger(GeocodingService.class); private static final Double PI = Math.PI; private static final Double PK = 180 / PI; private static final String MAP_URL= "http://api.map.baidu.com/geocoder/v2/?ak=4rcKAZKG9OIl0wDkICSLx8BA&output=json&address="; /** * 根据地址获取经纬度 * @param address * @return */ private Map<String,Double> getLatAndLngByAddress(String address){ Map<String,Double> poiMap = null; String result = null; try { result = Request.Get(MAP_URL+ address) .connectTimeout(1000).socketTimeout(1000) .execute().returnContent().asString(); } catch (IOException e) { LOG.error("调用百度地图API获取{}的经纬度,抛错{}",address,e); } if (StringUtils.isNotBlank(result) && "0".equals(JSON.parseObject(result).get("status") + "")){ String lat = result.substring(result.indexOf("\"lat\":") + ("\"lat\":").length(), result.indexOf("},\"precise\"")); String lng = result.substring(result.indexOf("\"lng\":") + ("\"lng\":").length(), result.indexOf(",\"lat\"")); poiMap = ImmutableMap.of("lat",Double.parseDouble(lat),"lng",Double.parseDouble(lng)); } return poiMap; } /** * 计算两个地址的距离(米) * @param address * @param otherAddress * @return */ public Double getDistanceFromTwoPlaces(String address,String otherAddress){ Double distance = null; if (StringUtils.isNotBlank(address) && StringUtils.isNotBlank(otherAddress)){ address = address.trim(); otherAddress = otherAddress.trim(); if (address.equals(otherAddress)){ return 0.0d; } Map pointA = getLatAndLngByAddress(address); Map pointB = getLatAndLngByAddress(otherAddress); distance = getDistanceFromTwoPoints(pointA,pointB); } return distance; } /** * 获取两个经纬度之间的距离(单位:米) * @param pointA * @param pointB * @return */ private Double getDistanceFromTwoPoints(Map pointA, Map pointB) { Double distance = null; if (pointA != null && !pointA.isEmpty() && pointB != null && !pointB.isEmpty()){ double lat_a = (double) pointA.get("lat"); double lng_a = (double) pointA.get("lng"); double lat_b = (double) pointB.get("lat"); double lng_b = (double) pointB.get("lng"); if (lat_a == lat_b && lng_a == lng_b){ return 0.0d; } double t1 = Math.cos(lat_a / PK) * Math.cos(lng_a / PK) * Math.cos(lat_b / PK) * Math.cos(lng_b / PK); double t2 = Math.cos(lat_a / PK) * Math.sin(lng_a / PK) * Math.cos(lat_b / PK) * Math.sin(lng_b / PK); double t3 = Math.sin(lat_a / PK) * Math.sin(lat_b / PK); double tt = Math.acos(t1 + t2 + t3); distance = 6366000 * tt; } return distance; }}
http://blog.csdn.net/u013142781/article/details/47085369
阅读全文
0 0
- Java调用百度地图API
- 百度地图api调用
- 调用百度地图API实例
- JS调用百度地图API
- 百度地图API调用实例
- javascript调用百度地图api
- 百度地图API的调用
- Android--调用百度地图API
- [API]百度地图的调用
- 百度地图api 异步调用
- js-调用百度地图api
- js调用百度地图API
- C#调用百度地图API
- 百度地图 API 调用 例子
- 关于百度地图API调用
- 调用百度地图Javascript API
- QT调用百度地图api
- delphi 调用百度地图api
- 归并排序
- Spring学习笔记(6)——IoC的三种注入方式
- Java7中的try-with-resources
- 邻接表(spfa模版)
- Java面试宝典(3)Java基础部分
- Java调用百度地图API
- 各操作系统各文件系统支持的最大文件的大小
- 常用Message Queue对比
- windows下查看端口占用以及关闭相应的进程
- SpringMVC学习(10):异常处理
- Java Web servlet中的cookie
- 【计算两数之和】不使用加减乘除
- hibernate保存数据到mysql时的中文乱码问题
- mySQL学习入门教程——2.创建表