输入地点名可以直接查询该位置的经度纬度(结合百度地图)

import com.alibaba.dubbo.common.utils.StringUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class MapLngLat {
/**
* 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
*/
public static Map<String, String> getGeocoderLatitude(String address) {
BufferedReader in = null;
try {
Map paramsMap = new LinkedHashMap<String, String>();
paramsMap.put(“address”, address);
paramsMap.put(“output”, “json”);
paramsMap.put(“ak”, “cW4AmdztXTI0xeYGZxDXG7tWA96qkQLi”);
String quest = GetLatitude.toQueryString(paramsMap);
URL tirc = new URL(
"http://api.map.baidu.com/geocoder/v2/?" + quest + “&sn=” + GetLatitude.result(paramsMap));

        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();Map<String, String> map = null;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);map = new HashMap<String, String>();map.put("lng", lng);map.put("lat", lat);return map;}}} catch (Exception e) {e.printStackTrace();} finally {try {in.close();} catch (IOException e) {e.printStackTrace();}}return null;
}public static class GetLatitude {/*** 对Map内所有value作utf8编码,拼接返回结果* @param data 参数的封装* @return 拼接的访问字符串的一部分如:address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&ak=yourakyoursk* @throws UnsupportedEncodingException*/public static String toQueryString(Map<?, ?> data) throws UnsupportedEncodingException {StringBuffer queryString = new StringBuffer();for (Map.Entry<?, ?> pair : data.entrySet()) {queryString.append(pair.getKey() + "=");queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8") + "&");}if (queryString.length() > 0) {queryString.deleteCharAt(queryString.length() - 1);}return queryString.toString();}/*** 来自stackoverflow的MD5计算方法,调用了MessageDigest库函数,并把byte数组结果转换成16进制* @param md5* @return*/private static String MD5(String md5) {try {java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");byte[] array = md.digest(md5.getBytes());StringBuffer sb = new StringBuffer();for (int i = 0; i < array.length; ++i) {sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));}return sb.toString();} catch (java.security.NoSuchAlgorithmException e) {}return null;}/*** 计算sn的值* @param paramsMap* @return* @throws UnsupportedEncodingException*/public static String result(Map paramsMap) throws UnsupportedEncodingException {/*** 计算sn跟参数对出现顺序有关,get请求请使用LinkedHashMap保存* <key,value>,该方法根据key的插入顺序排序;post请使用TreeMap保存* <key,value>,该方法会自动将key按照字母a-z顺序排序。所以get请求可自定义参数顺序(sn参数必须在最后)发送请求,* 但是post请求必须按照字母a-z顺序填充body(sn参数必须在最后)。以get请求为例:http://api.map.baidu.* com/geocoder/v2/?address=百度大厦&output=json&ak=yourak,* paramsMap中先放入address,再放output,然后放ak,放入顺序必须跟get请求中对应参数的出现顺序保持一致。*/// 调用下面的toQueryString方法,对LinkedHashMap内所有value作utf8编码,拼接返回结果address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&ak=yourakString paramsStr = toQueryString(paramsMap);// 对paramsStr前面拼接上/geocoder/v2/?,后面直接拼接yoursk得到/geocoder/v2/?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&ak=yourakyourskString wholeStr = new String("/geocoder/v2/?" + paramsStr + "FkytCBIZMi5kVhkfTBICZp02KGa1U5tk");// 对上面wholeStr再作utf8编码String tempStr = URLEncoder.encode(wholeStr, "UTF-8");// 调用下面的MD5方法得到最后的sn签名7de5a22212ffaa9e326444c75a58f9a0// System.out.println(MD5(tempStr));return MD5(tempStr);}}
public static void main(String args[]) {try {Map<String, String> json = MapLngLat.getGeocoderLatitude("北京市");System.out.println("lng : " + json.get("lng"));System.out.println("lat : " + json.get("lat"));} catch (Exception e) {e.printStackTrace();}
}

}

结果显示
lng : 117.316576258567
lat : 31.799293467782279

输入地点名可以直接查询该位置的经度纬度(结合百度地图)相关推荐

  1. 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?...

    [百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 原文: [百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 摘要: 酷讯.搜房. ...

  2. 调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...

    前几天接了一个小项目,就是有关百度地图的,和我的上一篇不一样,上一篇是复制人家的源代码是把东西写死了的,这次的比较有难度,要调取他的接口,用js来实现. 下面我先说一下主要实现的功能,和要实现的页面 ...

  3. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  4. java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...

    前几天接了一个小项目,就是有关百度地图的,和我的上一篇不一样,上一篇是复制人家的源代码是把东西写死了的,这次的比较有难度,要调取他的接口,用js来实现. 下面我先说一下主要实现的功能,和要实现的页面 ...

  5. 获取当前位置的经度纬度

    通过h5新增的navigator获得当前位置的经度纬度,使用方法为:navigator.geolocation.getCurrentPosition(success,error) <!DOCTY ...

  6. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...

    摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------- ...

  7. 手机端,h5,获取位置,经度纬度

    以下代码保存为html格式,在手机端浏览器打开,浏览器开放读取位置权限 <!DOCTYPE html> <html lang="en"> <head& ...

  8. (更新源码)AndroidStudio新手开发:天气app(百度地图api+和风天气api+城市查询+折线展示)

    AndroidStudio新手开发:天气app(百度地图api+和风天气api+城市查询+折线展示) 1.内容简介 2.环境配置 3.导入他人demo 4.AS项目分析 5.天气项目流程 6.数据探寻 ...

  9. 根据百度地图经纬度获取位置信息

    /*** 根据百度地图经纬度获取位置信息 **/ public class BaiduMapUtils {// 百度地图秘钥static String ak = "此处添加你的百度地图秘钥& ...

  10. 使用百度地图Web服务API查询地点的经纬度信息

    使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...

最新文章

  1. 身份识别协议枚举工具ident-user-enum
  2. 在EXT中向弹窗传值或者对象
  3. Linux下,安装配置Weblogic
  4. oracle重命名日志成员出错,Oracle日志文件
  5. Java - 文件(IO流)
  6. 如何开发rest接口服务_如何简化网络请求接口开发
  7. java用户界面项目_结对项目(带图型用户界面)Java实现【柴政-陈起廷】
  8. 安卓案例:利用SQLiteDatabase操作数据库与表
  9. mysql如何创建日志_mysql中的日志
  10. Python re模块将字符串分割为列表
  11. linux读取stm32唯一识别码,STM32HAL内部识别码,全球唯一识别码,UID读取
  12. 廖雪峰Python教程练习题
  13. windows10 1909 X64位 精简优化珍藏版
  14. 期待已久的大学生活之大一上
  15. Gson解析JSON数组
  16. 实事 | 神州十三号升空,点燃了谁的光与梦?
  17. 《7天精通直播带货》运营型主播成长型,提升直播能力与技巧
  18. LeetCode1219 黄金矿工
  19. python 提取出字符串括号中的内容,正则表达式
  20. android 实现QQ好友列表(扩展listview:ExpandableListView)

热门文章

  1. 图像复原matlab论文,基于matlab图像复原论文
  2. ORACLE有EXCEL中trend函数,[求助]trend使用方法
  3. 怎么把程序内部坐标转为屏幕坐标_各位老大,如何把屏幕坐标转换成游戏的坐标...
  4. matlab支持向量回归,支持向量回归 MATLAB代码
  5. 【八方位云台控制器】
  6. sysmain服务怎么启动 Win7 SuperFetch无法启动
  7. Linux下安装wechat
  8. 小白学VUE——实现抖音时钟(CDN方式)
  9. Unity3d iOS 内购详细流程总汇
  10. 一天一个产品分析之抖音短视频_米米米米粒口红_新浪博客