java 地图坐标转换_百度地图经纬度和地址互转(Java代码)
这是基于springmvc+mybatis 的一个controller。如果不是这个框架,可以把方法实体抽到自己写的一个类中,然后再测试
package com.uwitec.controller.system.tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.google.gson.Gson;
import com.uwitec.controller.base.BaseController;
import com.uwitec.util.AppUtil;
import com.uwitec.util.Const;
import com.uwitec.util.MapDistance;
import com.uwitec.util.PageData;
import com.uwitec.util.PathUtil;
import com.uwitec.util.TwoDimensionCode;
@Controller
@RequestMapping(value="/tool")
public class ToolController extends BaseController {
/**
* 输入地址返回经纬度坐标
* key lng(经度),lat(纬度)
*/
@RequestMapping(value="/getXY")
public void getGeocoderLatitude(String address){
BufferedReader in = null;
try {
address = URLEncoder.encode(address, "UTF-8");
URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+"7d9fbeb43e975cd1e9477a7e5d5e192a");
in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
String res;
StringBuilder sb = new StringBuilder("");
while((res = in.readLine())!=null){
sb.append(res.trim());
}
String str = sb.toString();
if(StringUtils.isNotEmpty(str)){
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
String lng = str.substring(lngStart+5, lngEnd);
String lat = str.substring(lngEnd+7, latEnd);
}
}
}catch (Exception e) {
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 输入经纬度返回地址
* key lng(经度),lat(纬度)
*/
@RequestMapping(value="/getAdr")
public void getposition(String latitude,String longitude) throws MalformedURLException{
BufferedReader in = null;
URL tirc = new URL("http://api.map.baidu.com/geocoder?location="+ latitude+","+longitude+"&output=json&key="+"E4805d16520de693a3fe707cdc962045");
try {
in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
String res;
StringBuilder sb = new StringBuilder("");
while((res = in.readLine())!=null){
sb.append(res.trim());
}
String str = sb.toString();
//System.out.println(str);
ObjectMapper mapper = new ObjectMapper();
if(StringUtils.isNotEmpty(str)){
JsonNode jsonNode = mapper.readTree(str);
jsonNode.findValue("status").toString();
JsonNode resultNode = jsonNode.findValue("result");
JsonNode locationNode = resultNode.findValue("formatted_address");
System.out.println(locationNode);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二:SQL语句计算经纬度距离:2017-04-07
SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY id LIMIT 20
SELECT
(
6371 * acos(
cos(radians(29.490295)) * cos(radians(29.615467)) * cos(
radians(106.581515) - radians(106.486654)
) + sin(radians(29.490295)) * sin(radians(29.615467))
)
)*1000 AS distance
delimiter //
drop function if exists FUN_JW_DIST;
CREATE FUNCTION `FUN_JW_DIST`(lng1 double(15,9), lat1 double(15, 9), lng2 double(15,9), lat2 double(15,9)) RETURNS int(11)
BEGIN
DECLARE dist int;
SET dist = round((
6371 * acos(
cos(radians(lat1)) * cos(radians(lat2)) * cos(
radians(lng1) - radians(lng2)
) + sin(radians(lat1)) * sin(radians(lat2))
)
)*1000);
RETURN (dist);
END;
SELECT FUN_JW_DIST(106.486654 , 29.490295 , 106.581515 , 29.615467);
java 地图坐标转换_百度地图经纬度和地址互转(Java代码)相关推荐
- java 地图坐标转换_百度地图坐标和高德地图坐标转换代码 Java实现
最近做项目需要百度地图坐标转换到高德地图坐标,高德官方也给出了转换接口(百度地图也给出了转换接口) http://lbs.amap.com/api/javascript-api/reference/l ...
- java判断地图范围_百度地图java 判断当前位置是否在多边形区域内
package com.haiyisoft.cAssistant.adapter.hessian; import java.awt.geom.Point2D; import java.util.Arr ...
- java开发百度地图瓦片_百度地图API:利用瓦片生成工具,自定义背景图片
一.制作地图的准备工作 其实,你只需要准备一些地图的瓦片图,就可以了. 用切片工具,把一张完整的图片(最好大一些,清楚一些),切成小片,可使用 TileCutter工具. 二.了解百度地图API的地图 ...
- 地图坐标转换问题--百度地图定位偏
在地图定位开发中,许多定位模块输出坐标系是国际标准 WGS-84 坐标系,所以开发者在国内常见地图定位时,会发现与实际情况有几十米的误差.这并非模块问题, 而是国内地图采用了非标坐标系所致. 国内常见 ...
- python爬取百度地图数据_百度地图POI数据爬取
利用百度地图开发者中心中的web API获取城市POI数据,后期会写出完整的多种参数详细数据获取教程.本次只写出了根据关键词和目的地的数据获取程序. 将爬取下来的数据保存到本地csv文件. 百度API ...
- 百度地图保存图片_百度地图与高德地图PK,你pick哪一个?
随着智能手机的广泛使用,地图软件几乎成为像微信.支付宝等手机必不可少的一款手机应用.而且随着智慧城市的进一步发展,城市的交通系统也变得更加复杂而且日新月异,面对日益复杂的交通系统,手机地图更是人们出行 ...
- java 百度地图地址解析_百度地图Java地址解析和经纬度解析
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.ne ...
- java地图瓦片_百度地图瓦片层级范围对照表
最近搞地图搞的多,因为项目要求需要做个离线地图来添加覆盖物,网上有篇博客教我们怎么下载瓦片的,对应的是java代码,但是每次操作去看console里的层级和范围超级麻烦,而网上有提供软件下载,感觉有点 ...
- java 地图轨迹_百度地图多个坐标连成轨迹
http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html (js api) http://lbsyun.baidu.com/js ...
最新文章
- python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
- 数据结构——马踏棋盘题解(贪心算法)
- 微信公众号 JSSDK 提示:invalid signature
- Runloop循环机制
- 15怎么自己画元件_【技术】3.1(1) 先了解清楚了,才能画一个元件-成都单片机开发...
- android 前台服务自定义布局不显示_Android前台服务通知未显示
- poj Going from u to v or from v to u? 强联通缩点+拓扑排序(或搜索)
- Linux编程 文件操作,linux高级编程(文件操作)
- vs2015运行项目时出现“编译器失败,错误代码为 1”的解决方案
- WCF分布式开发常见错误(17):无法启动MSMQ服务
- 第十五章笔记 虚拟机管理
- 一年级美术下册教案(新人美版)
- 安卓手机怎么投屏台式计算机,怎么将手机投屏到台式电脑上
- 黑马程序员JAVAEE企业级开发应用教程笔记
- 智能路由器OpenWrt 开发环境 及 编译分析(一)
- 【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
- 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式
- 计算机毕业设计基于asp.net校园二手物品交易平台
- Visio安装问题解决:office即点即用安装程序
- 云服务器备案和网站备案区别,服务器备案和不备案有什么区别吗?