java 地图api接口_Java调用百度地图API
发布日期:2022-02-08 20:23:52 浏览次数:29 分类:技术文章

本文共 3012 字,大约阅读时间需要 10 分钟。

本实战代码将使用百度地图的接口来实现以下功能:

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")

@Transactional

public 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 getLatAndLngByAddress(String address){

Map 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

转载地址:https://blog.csdn.net/weixin_33132553/article/details/114065462 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python视频换脸下载_Faceswap拍照换脸软件电脑版(faceswap gui视频换脸)1.2官方版
下一篇:java反射获得属性值_java反射取对象属性值 不是通过get方法取值?

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月02日 22时19分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql 1045 28000_mysql报关于用户密码1045(28000),几种处理方法 (zhuan) 2019-04-21
solr比mysql的优势_Solr与Elasticsearch的优缺点比较总结和归纳 2019-04-21
华为博士招聘上机考试题目_牛客网-华为-2020届校园招聘上机考试-3 2019-04-21
python中for可以做变量名吗_Python中使用动态变量名的方法 2019-04-21
mysql 日期转换天数_MySQL 日期操作 增减天数、时间转换、时间戳 2019-04-21
java对象去重复_JAVA中List对象去除重复值的方法 2019-04-21
java bss_[转] .bss段和.data段的区别 2019-04-21
java上传图片损坏_大神求助 上传图片后 图片损坏 2019-04-21
java socket唯一标识符_Java Socket编程之常识网络基础知识 2019-04-21
java给xyz大小排序_java递归实现string xyz排序 2019-04-21
arctime必须要java_Arctime使用教程 Arctime常见问题解答 2019-04-21
mysql pxc mysql5.7_mysql之PXC5.7.18集群系列——1. Percona XtraDB Cluster 搭建 2019-04-21
mysql 自适应字段宽度_box-sizing解决自适应布局容器宽度问题 2019-04-21
java 配置文件配置路径_Java读取配置文件路径设置 2019-04-21
vux 选择器_vue中的scoped分析以及在element-UI和vux中的应用 2019-04-21
java cache 有效期_springboot cache 自定义过期时间及自定义缓存key前缀 2019-04-21
java实验一目的_Java实验报告(实验一) 2019-04-21
java+native+字段_+Java中的native关键字浅析(Java+Native+Interface)++ 2019-04-21
php 内存泄露检测工具,php - 诊断内存泄漏 - 允许#bytes的内存大小耗尽 2019-04-21
Java 去除空格获取文件路径 2019-04-21