`

Java调用百度地图API

阅读更多

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

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

分享到:
评论

相关推荐

    java 调用 百度api 调用百度地图api

    使用javascript 调用百度地图api 调用百度地图api 非常简单

    java调用百度地图API反解析经纬码.rar

    综上所述,通过Java调用百度地图API反解析经纬码,可以将经纬度坐标转换为具体的地址,这对于需要地理位置服务的项目非常有用。在实际应用中,你可能需要结合数据库操作、多线程处理等技术,以提高效率和用户体验。

    java调用百度地图API反解析经纬码

    百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的...本资源调用百度地图API反解析经纬码 输出结果以json格式输入,并输出对应地址 请下载相应的jar包 不然可能无法运行 将代码复制到Eclipse项目类中

    【Java毕业设计】代毕业设计,java调用百度地图API实现西安旅游景点搜索、路线规划导航.zip

    4. **Web服务调用**:理解如何使用API密钥、请求参数和签名机制是调用百度地图API的关键。开发者需要根据API文档,构造正确的请求URL,添加必要的参数,如起点、终点、方式(驾车、步行、骑行等),并计算安全签名。...

    java百度地图获取经纬坐标和图例显示文档

    在Java编程中,使用百度地图API来获取经纬坐标并实现图例显示是常见的地理信息系统(GIS)应用。本文将深入探讨这一主题,帮助初学者掌握关键知识点。 首先,要使用百度地图API,你需要在百度地图开放平台...

    java 调用百度地图

    以下是一些关于如何在Java中使用百度地图API的关键知识点: 1. **百度地图API接入**:首先,你需要在百度地图开放平台注册一个账号并创建应用,获取到API密钥(AK)。这是所有请求的基础,因为每个请求都需要带上这...

    百度地图api使用例子

    调用百度地图API需要在项目中引入相关的JavaScript库,并设置API密钥以确保合法使用。 **前端页面展示位置信息** 是通过调用百度地图API的定位服务实现的。首先,我们需要获取用户的浏览器权限,然后调用`BMap....

    百度地图api,百度地图二次开发

    搜索模块的实现可以使用百度地图API提供的搜索接口。 五、自定义添加 自定义添加是百度地图API二次开发的另一个重要功能。自定义添加可以允许用户在地图上添加自定义的点位信息,并将其保存到数据库中。自定义添加...

    百度地图API记录轨迹和里程Javascript版html

    在本文中,我们将深入探讨如何使用百度地图API在JavaScript环境下记录轨迹和计算里程。百度地图API是一个强大的工具,它提供了丰富的地图服务,包括定位、地图展示、路线规划、地理编码等,非常适合开发者进行Web...

    Android调用百度地图api

    本篇将详细讲解如何在Android应用中调用百度地图API,并实现自动定位、获取中心位置坐标以及标注地理信息等功能。 首先,我们需要在百度地图开放平台注册一个账号,创建应用并获取API密钥。这个API密钥是连接我们...

    调用百度地图API的demo

    本示例是开发者通过一周的努力整理出的全面调用百度地图API的Demo,旨在帮助开发者省去独立探索的困扰。 首先,我们要了解百度地图SDK。百度地图SDK为Android应用提供了强大的地图服务,包括基本地图展示、地图图层...

    java调用百度公交系统

    在使用百度地图API之前,你需要在百度地图开放平台注册并创建一个应用,获取API密钥。这个密钥将用于验证你的请求,并确保只有授权的应用可以访问API。 2. **构建请求URL**: 调用百度公交系统API时,你需要构造...

    jQuery百度地图API美团外卖配送地址定位代码

    2. **初始化地图**:在JavaScript代码中,使用百度地图API的`BMap`对象创建一个新的地图实例,并设置地图的容器(通常是HTML元素ID)和初始中心点坐标。 3. **添加定位控件**:使用`BMap.GeolocationControl`创建一...

    百度地图api离线版,api版本为2.0

    1. **kaiduhe.html** 和 **sample.html**:这两个文件是示例网页,展示了如何使用百度地图API 2.0进行地图展示、标注、事件监听等基本操作,可作为开发参考。 2. **GoogleToBaidu.jar**:这是一个用于将Google地图...

    百度地图根据地址获取经纬度

    可在服务器端传入地址参数,调用百度的接口,将百度返回的经纬度转化到java代码中使用。

    调用百度地图API实现的桌面应用程序

    标题中的“调用百度地图API实现的桌面应用程序”是指利用编程语言(如C#、Java或Python等)创建一个桌面应用程序,并在这个应用中嵌入了百度地图的服务。开发者通过调用百度地图提供的API(Application Programming ...

    百度地图API调用Demo

    这个Demo涵盖了百度地图API的大部分基本功能,对于初学者来说,这是一个很好的学习和实践平台,能够帮助他们在短时间内快速理解和掌握API的使用。 首先,我们要了解百度地图API的基础知识。百度地图API是百度提供的...

    基于百度地图api开发手机地图

    2. **地图显示**:使用百度地图API,开发者可以实现在手机上显示地图,包括不同级别的缩放、平移、旋转等操作。此外,还可以添加自定义图层、覆盖物(如标记、信息窗口)来展示特定数据或进行个性化定制。 3. **...

    通过百度地图api获取运行轨迹

    【标题】"通过百度地图API获取运行轨迹"涉及的关键知识点主要集中在使用百度地图服务来追踪和展示移动对象的路径。百度地图API是一个强大的工具,它提供了丰富的地理信息系统(GIS)功能,包括地图显示、定位、路线...

Global site tag (gtag.js) - Google Analytics