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

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

java 地图api接口_Java调用百度地图API相关推荐

  1. APICloud,内置API及url调用百度地图导航

    内置API及url调用百度地图APP导航 方法中的两个参数,为自己当前位置的经纬度 function arouseMap(lon,lat){var location = $api.getStorage ...

  2. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  3. 百度地图AK申请注意+百度地图API生成热力图+调用百度地图API自动获取经纬度和地址

    文章目录 一.百度地图AK密钥申请 二.调用百度地图API生成热力图 三.调用百度地图API自动获取经纬度和地址 一.百度地图AK密钥申请 点击百度地图API控制台,输入登录账户,即可进入,若账户未完 ...

  4. android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)

    本篇文章给大家带来的内容是关于h5页面如何调用百度地图获取当前位置(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在项目中越来越多的用到了手机的GRS定位功能,使用百度地图A ...

  5. python百度翻译接口_python3 调用百度翻译API翻译英文

    自行申请百度开发者账号import importlib,sys,urllib importlib.reload(sys) import urllib.request import json #导入js ...

  6. python创建api接口_Python调用飞书API接口

    知乎文章若有排版问题请见谅,原文放在个人博客中[欢迎互踩!] 写在最前 飞书作为一款高效远程办公软件,在疫情期间凭借着人性化的UI交互以及稳定的远程联络能力深得各大企业的偏好.但在创建团队之初,难免遇 ...

  7. php 百度地图api获取经纬度,调用百度地图API接口获取地铁站的经纬度信息

    今天我们来看一下,如何通过百地图API来获取地点的经纬度.首先百度地图提供了强大的API接口,我们可以通过调用它来实现目的.这是网址:https://lbsyun.baidu.com/.首先想要调用A ...

  8. python调用百度地图api定位_python 调用百度地图地点检索webAPI

    百度地图提供了开放的API,使用方法 右上角登陆账号 -> 点击"获取密钥" -> "创建应用" -> 填写应用名称&白名单IP -& ...

  9. html利用百度地图查找路线,html调用百度地图API实现查找路线

    有时候做企业网站经常用到指引地图.用默认的吧,样式可能又不太符合主题,所以就有了下面这个版本. 基于百度官方demo样式修改,改得不好请轻喷.我看过有的是直接打开页面就定位个地址然后跳转搜索路线,我觉 ...

最新文章

  1. c++ #define
  2. Matlab | Matlab从入门到放弃(6)——数组
  3. dash使用_使用Dash和SHAP构建和部署可解释的AI仪表盘
  4. 浅谈Opencl之OpenCL_flush 和 finish区别
  5. 两款404页面自动跳转源码html
  6. 平方差和交叉熵损失函数分别用在哪些场景?
  7. MySql - 事务 | 锁
  8. 定时器实现原理——时间轮
  9. 线程创建的三种方式和线程池创建的四种方式
  10. 新手必看:PS软件入门基础知识
  11. 评价法(一):层次分析法的步骤和方法
  12. python提取实部虚部_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]|python基础教程|python入门|python教程...
  13. 创业之前必须要做的八个测试
  14. Linux kernel + busybox自制Linux系统
  15. Vue elementUI中的Breadcrumb面包屑
  16. UE5 UE4 WorldCreator地形快速制作
  17. python IDE环境
  18. 微信公众平台如何与Web App结合?
  19. 科技大佬的那些情史!
  20. 转载:辗转相除法求最大公约数

热门文章

  1. Mac OS 使用命令(scp/sftp)将本地文件上传到远程 Linux 服务器主机或者从远程主机下载文件到本地主机
  2. python ray定时_当 Python 邂逅 POV-Ray
  3. aseprite手机版_texture packs泰拉瑞亚
  4. C语言中return的作用
  5. stm32正常运行流程图_stm32学习基本知识点
  6. 崇阳职校计算机基础知识试题及答案,崇阳职校2014年春期末考试.doc
  7. File “h5py\h5.pyx“, line 1, in init h5py.h5 ImportError: DLL load failed whi
  8. Cadence原理图层次化设计
  9. js省市县三级联动效果实例
  10. java链表源码_JAVA之链表源码 - 飞翔的南极企鹅的个人空间 - OSCHINA - 中文开源技术交流社区...