通过百度地图API获取经纬度以及两点间距离
- package com.baidumap;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLConnection;
- import org.springframework.util.StringUtils;
- import com.sankai.zhcloud.util.entity.LatitudeAndLongitude;
- import net.sf.json.JSONObject;
- public class LngAndLatUtil {
- /**
- * 根据地址获得经纬度
- */
- public static LatitudeAndLongitude getLngAndLat(String address) {
- LatitudeAndLongitude latAndLng = new LatitudeAndLongitude();
- String url = "http://api.map.baidu.com/geocoder/v2/?address=" + address + "&output=json&ak=自己注册的ak值";
- String json = loadJSON(url);
- if (StringUtils.isEmpty(json)) {
- return latAndLng;
- }
- int len = json.length();
- // 如果不是合法的json格式
- if (json.indexOf("{") != 0 || json.lastIndexOf("}") != len - 1) {
- return latAndLng;
- }
- JSONObject obj = JSONObject.fromObject(json);
- if (obj.get("status").toString().equals("0")) {
- double lng = obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
- double lat = obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
- latAndLng.setLatitude(lat);
- latAndLng.setLongitude(lng);
- }
- return latAndLng;
- }
- public static String loadJSON(String url) {
- StringBuilder json = new StringBuilder();
- try {
- URL urlObj = new URL(url);
- URLConnection uc = urlObj.openConnection();
- BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
- String inputLine = null;
- while ((inputLine = br.readLine()) != null) {
- json.append(inputLine);
- }
- br.close();
- } catch (MalformedURLException e) {
- } catch (IOException e) {
- }
- return json.toString();
- }
- /**
- * 测试方法 说明:把代码中的ak值(红色字部分)更改为你自己的ak值,在百度地图API中注册一下就有。
- * 百度路径:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
- */
- public static void main(String[] args) {
- LatitudeAndLongitude latAndLng = LngAndLatUtil.getLngAndLat("天安门");
- System.out.println("经度:" + latAndLng.getLongitude() + "---纬度:" + latAndLng.getLatitude());
- }
- /**
- * 补充:计算两点之间真实距离
- * @return 米
- */
- public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
- // 维度
- double lat1 = (Math.PI / 180) * latitude1;
- double lat2 = (Math.PI / 180) * latitude2;
- // 经度
- double lon1 = (Math.PI / 180) * longitude1;
- double lon2 = (Math.PI / 180) * longitude2;
- // 地球半径
- double R = 6371;
- // 两点间距离 km,如果想要米的话,结果*1000就可以了
- double d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1)) * R;
- return d * 1000;
- }
- }
通过百度地图API获取经纬度以及两点间距离的更多相关文章
- vue项目使用百度地图API获取经纬度
一.首先在百度api注册获得ak密钥 二.进行引入 (1).第一种方式: 直接在vue中index.html中用script标签引入. //你的ak密钥需要替换真实的你的ak码 <script ...
- Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过百度地图API获取位置
通过第三方库exifread读取照片信息.exifread官网:https://pypi.org/project/ExifRead/ 一.安装exifreadpip install exifread ...
- HTML5调用百度地图API获取当前位置并直接导航目的地的方法
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8&quo ...
- HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"&g ...
- 批量调用百度地图API获取地址经纬度坐标
1 申请密匙 注册百度地图API:http://lbsyun.baidu.com/index.php?title=webapi 点击左侧 “获取密匙” ,经过填写个人信息.邮箱注册等,成功之后在开放平 ...
- [WPF] 浏览百度地图并获取经纬度地址信息
项目中需要利用登记的区域和地址在百度地图上定位,并获取该地址的经纬度. 本次功能对我来说主要难点如下:1.百度地图API的基本使用方法,请首选使用百度地图的JavaScript大众版(PS:之前使用W ...
- JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
首先要注册百度地图API. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的“API控制台”,点击,创建应用. 应用类型选择:“浏览器端”, ...
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
本篇记录我在实现时的思考过程,写给之后可能遇到困难的我自己也给到需要帮助的人. 写的比较浅显,见谅. 在写项目代码的时候,需要把Android端的位置信息传输到服务器端,通过Netty达到连续传输的效 ...
- PhoneGap Geolocation结合百度地图api获取地理位置api
一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...
随机推荐
- How far away ? LCA求树上两点距离
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- idea一些文件如.xml 文件搜索不到的解决方法
- luncence
问题的提出: 我们在访问淘宝,京东这些商城系统的时候,我们可以随意的在文本框输入关键字就可以获取到所想要的信息或者相关的信息,那么我们到底是如何实现这个功能的呢,为什么可以随意的输入就可以显示相关的信 ...
- SSH客户端,FinalShell服务器管理,远程桌面加速软件,支持Windows,Mac OS X,Linux,版本2.6.3.1
FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 用户QQ群 342045988 Windows版下载地址:http:/ ...
- gps各种地图坐标系转换
原文地址:https://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WG ...
- java主线程捕获子线程中的异常
本文主要参考:<think in java> 好,下面上货. 正常情况下,如果不做特殊的处理,在主线程中是不能够捕获到子线程中的异常的. 例如下面的情况. package com.xuey ...
- [洛谷P1404] 平均数
洛谷题目链接:平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来 ...
- UIDatePicker---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址: iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 UIDatePicker //转载请注明出处--本文永久链接:http://www ...
- Linux系统文件权限体系详解
准备工作:先简单了解Linux文件权限 在Linux系统中,ls -l 命令可以查看文件的权限,如 [zhaohuizhen@localhost Test]$ ls -l a -rw-rw-r--. ...
- httpd -v command not found
使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v