利用百度LBS做一个小Demo

为什么80%的码农都做不了架构师?>>>   hot3.png

  • 申请ak(即获取密钥

    • http://lbsyun.baidu.com/apiconsole/key?application=key 去这儿注册一个开发者账号即可

  • 拼写发送http请求的url

    • 譬如这样的调用

    • http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation
  • 接收http请求返回的数据

下面看看代码

/*** 接口常量* @author rex**/
public interface BaiDuApi {/** 根据ip获取信息*/public static final String BD_IP_LOCATION_API = "http://api.map.baidu.com/location/ip";/**根据城市/经纬度获取信息*/public static final String BD_LOCATION2POINT_API = "http://api.map.baidu.com/geocoder/v2/";/** 百度lbs ak密钥*/public static final String BD_LBS_AK = "你申请的AK";}

    

/** 百度地图API*/
public final class BaiDuMapApi {private static Map<String, String> params = CollectionUtil.newHashMap();private static final List<String> LOCAL_IP = Arrays.asList("127.0.0.1", "localhost");/** 根据ip获取经纬度*/public static Map<String, String> getPoint(String ip) {params.clear();Map<String, String> point = CollectionUtil.newHashMap();if (null != ip && !LOCAL_IP.contains(ip)) {params.put("ip", ip);}params.put("ak", BaiDuApi.BD_LBS_AK);params.put("coor", "bd09ll");String r = HttpKit.get(BaiDuApi.BD_IP_LOCATION_API, params);String json = StringUtils.unicodeToString(r);Map<String, Object> map = JSONUtil.json2Map(json);Map<String, Object> content = JSONUtil.json2Map(map.get("content").toString());Map<String, String> xy = JSONUtil.json2Map(content.get("point").toString());point.put("latitude", xy.get("y"));point.put("longitude", xy.get("x"));return point;}/** 根据城市和地址获取经纬度*/public static Map<String, String> getPoint(String city, String address) {params.clear();Map<String, String> point = CollectionUtil.newHashMap();if (StringUtils.isNotBlank(city) && StringUtils.isNotBlank(address)) {params.put("ak", BaiDuApi.BD_LBS_AK);params.put("callback", "renderOption");params.put("output", "json");params.put("city", city);params.put("address", address);String r = HttpKit.get(BaiDuApi.BD_LOCATION2POINT_API, params);String json = StringUtils.unicodeToString(r.substring(r.indexOf("{"), r.lastIndexOf("}") + 1));Map<String, Object> map = JSONUtil.json2Map(json);Map<String, Object> content = JSONUtil.json2Map(map.get("result").toString());Map<String, Object> location = JSONUtil.json2Map(content.get("location").toString());point.put("latitude", location.get("lat").toString());point.put("longitude", location.get("lng").toString());}return point;}/** 根据ip获取address*/public static Map<String, String> getAddress(String ip) {params.clear();Map<String, String> address_detail = CollectionUtil.newHashMap();if (null != ip && !LOCAL_IP.contains(ip)) {params.put("ip", ip);}params.put("ak", BaiDuApi.BD_LBS_AK);String r = HttpKit.get(BaiDuApi.BD_IP_LOCATION_API, params);String json = StringUtils.unicodeToString(r);Map<String, Object> map = JSONUtil.json2Map(json);Map<String, Object> content = JSONUtil.json2Map(map.get("content").toString());address_detail = JSONUtil.json2Map(content.get("address_detail").toString());return address_detail;}/** 根据经纬度获取详细地址*/public static Map<String, Object> getAddress(String latitude, String longitude) {params.clear();Map<String, Object> info = CollectionUtil.newHashMap();if (StringUtils.isNotBlank(latitude) && StringUtils.isNotBlank(longitude)) {params.put("callback", "renderReverse");params.put("ak", BaiDuApi.BD_LBS_AK);params.put("location", latitude + "," + longitude);params.put("output", "json");params.put("pois", "0");String r = HttpKit.get(BaiDuApi.BD_LOCATION2POINT_API, params);String json = StringUtils.unicodeToString(r.substring(r.indexOf("{"), r.lastIndexOf("}") + 1));Map<String, Object> map = JSONUtil.json2Map(json);info = JSONUtil.json2Map(map.get("result").toString());}return info;}}

/** 百度地图API测试*/
public class Test {public static void main(String[] args) {//获取地址信息Map<String, String> m1 = BaiDuMapApi.getAddress(null);System.out.println(m1);//获取经纬度信息Map<String, String> m2 = BaiDuMapApi.getPoint(null);System.out.println(m2);//根据城市获取经纬度Map<String, String> m3 = BaiDuMapApi.getPoint("上海市", "东方明珠");System.out.println(m3);//根据经纬度获取地址Map<String, Object> m4 = BaiDuMapApi.getAddress(m3.get("latitude"), m3.get("longitude"));System.out.println(m4);}
}

    

{province=上海市, city=上海市, street=, district=, street_number=, city_code=289}
{latitude=31.24916171, longitude=121.48789949}
{latitude=31.244750205504, longitude=121.50713723717}
{formatted_address=上海市浦东新区陆家嘴环路1388号, business=东外滩,陆家嘴,外滩, cityCode=289, location={"lat":31.244750051136,"lng":121.50713723717}, addressComponent={"city":"上海市","district":"浦东新区","province":"上海市","street":"陆家嘴环路","street_number":"1388号"}}


转载于:https://my.oschina.net/biezhi/blog/299295

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PWA(Progressive Web App)入门系列:(四)Promise

前言 这一章说一下ES6的Promise对象。为什么要在PWA系列的文章中讲Promise呢&#xff1f;因为PWA中的许多技术API中都是以Promise返回的方式返回的&#xff0c;为了对后续章节中PWA技术API更好的理解&#xff0c;这里就来说一个Promise对象。 Promise出现的背景 在JavaScrip…

图文详解如何搭建Windows的Android C++开发环境

原地址:http://www.apkbus.com/android-18595-1-1.html ////TITLE:// 图文详解如何搭建Windows的Android C开发环境&#xff08;一&#xff09;//AUTHOR:// norains//DATE:// Thursday 14-April-2011//Environment:// Cygwin 1.7.9// Android NDK r5//1. 下载A…

PWA(Progressive Web App)入门系列:(五)Web Worker

前言 在说Service Worker前有必要说一下Web Worker&#xff0c;因为Service Worker本身就属于Web Worker的延伸&#xff0c;大部分功能也是基于Web Worker进行的扩展。 背景 众所周知&#xff0c;JavaScript引擎是以单线程调度的方式进行&#xff0c;我们无法同时运行多个Ja…

Glob Patterns匹配模式使用

前段时间在用workbox时&#xff0c;在做precache时&#xff0c;匹配模式基于的是Glob Pattern模式&#xff0c;于是就看了下相关文档。 下面翻译一下node-glob的使用&#xff0c;原文&#xff1a;https://github.com/isaacs/node-glob#glob-primer Glob 像在shell里面&#x…

Workbox CLI v3.x 中文版

在写PWA应用时&#xff0c;用到WorkBox工具&#xff0c;使用过程中发现没有中文的帮助文档&#xff0c;为了体验好一些&#xff0c;也为了方便自己和他人查看&#xff0c;在这里翻译了一下workbox-cli。 Workbox CLI 是什么? Workbox命令行&#xff08;在workbox-cli包内&…

Workbox.routing v3.x 中文版

NAMESPACE STATIC VERSION V3.6.1 类 NavigationRoute NavigationRoute可以轻松创建匹配浏览器navigation requests的Route。 它仅匹配mode设置为navigate的请求。 您可以只使用blacklist和whitelist参数中的一个或两个&#xff0c;将此路由应用于导航请求中。 RegExpRout…

Workbox.strategies v3.x 中文版

NAMESPACE STATIC VERSION V3.6.1 该模块提供了大多数serviceworker常用的缓存策略的简单实现。 类 CacheFirst cache-first请求策略的实现。 缓存优先策略对于带版本号的资源是非常有用的&#xff0c;像这种URLstyles/example.a8f5f1.css&#xff0c;因为它们可以长时间缓存…

集算器访问HTTP数据的代码示例

使用集算器&#xff08;esProc&#xff09;可以很方便的从http数据源读取数据进行处理。本例子中有一个servlet&#xff0c;对外提供json格式的雇员信息查询。Servlet访问数据库的员工表&#xff0c;保存了员工的信息&#xff0c;如下&#xff1a;EID NAME SURNAME …

PWA(Progressive Web App)入门系列:Cache Storage Cache

前言 目前浏览器的存储机制有很多&#xff0c;如&#xff1a;indexedDB、localStorage、sessionStorage、File System API、applicationCache 等等&#xff0c;那为什么又制定了一套 Cache API 呢&#xff1f;对比其他存储机制有什么优势&#xff1f; 简介 Cache API 是一套…

「浏览器插件」无广告国内视频平台直接播放插件

前段时间发现一些比较不错的解析国内视频平台的一些 API 接口&#xff0c;很早之前基于这些接口做过一个 Android 端的播放软件&#xff0c;但为了更方便使用吧&#xff0c;于是做了一个 Chrome 的浏览器插件&#xff0c;解析接口也是在线更新的&#xff0c;所以用起来会比较方…

kafka性能测试(转)KAFKA 0.8 PRODUCER PERFORMANCE

来自:http://blog.liveramp.com/2013/04/08/kafka-0-8-producer-performance-2/ At LiveRamp, we constantly face scaling challenges as the volume of data that our infrastructure must deal with continues to grow. One such challenge involves the logging system. At…

Workbox-Window v4.x 中文版

Workbox 目前发了一个大版本&#xff0c;从 v3.x 到了 v4.x&#xff0c;变化有挺大的&#xff0c;下面是在 window 环境下的模块。 什么是 workbox-window? workbox-window 包是一组模块&#xff0c;用于在 window 上下文中运行&#xff0c;也就是说&#xff0c;在你的网页内…

媒体播放器三大底层架构

2019独角兽企业重金招聘Python工程师标准>>> 媒体播放工具&#xff0c;这里主要指视频播放&#xff0c;因为要面临庞大的兼容性和纷繁复杂的算法&#xff0c;从架构上看&#xff0c;能脱颖而出的体系屈指可数。大体来说业界主要有3大架构&#xff1a;MPC、MPlayer和…

PWA 可用性检测工具

针对移动端或者 PC 端浏览器是否对 PWA 可用的问题上&#xff0c;做了一个简单的站点&#xff0c;来实现上述问题的方便检测。让开发者较快的了解终端浏览器的特性支持度。 使用 工具地址&#xff1a;https://lecepin.gitee.io/detect-sw/ 地址二维码&#xff1a; 检测 可…

PWA 应用列表及常用工具

引言 在做 PWA 的过程中自己写了一些相关的应用和工具&#xff0c;在这里整合下&#xff0c;方便记录及查找使用。 应用列表 PWA 支持检测工具番茄钟二维码生成新闻应用身体数据统计应用支付宝集福应用田英章书法字典应用抖音无水印下载应用很好用的备忘录精神氮泵 PWA 支持检…

Struts2中访问HttpServletRequest和HttpSession

2019独角兽企业重金招聘Python工程师标准>>> 关键字: struts2 httpservletrequest httpsession 在没有使用Struts2之前,都习惯使用HttpServletRequest和HttpSession对象来操作相关参数,下面介绍一下在Struts2中访问隐藏的HttpServletRequest和HttpSession的两种方法…

web前端长度单位详解(px、em、rem、%、vw/vh、vmin/vmax、vm、calc())

基础理论1&#xff09;简介2&#xff09;绝对长度3&#xff09;相对长度4&#xff09;经验之谈1&#xff09;简介 在前端开发中&#xff0c;会遇到各种不同类型的长度单位&#xff0c;比如px,em,rem等。 而整体的长度单位分为两大类&#xff1a;相对长度 和 绝对长度。 2&…

PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body

前言 在 WEB 中&#xff0c;对于网络请求一直使用的是 XMLHttpRequest API 来处理&#xff0c;XMLHttpRequest 也很强大&#xff0c;传统的 Ajax 也是基于此 API 的。那么为什么 W3C 标准中又加入了类似功能的 Fetch API 呢&#xff1f;他有何优势。 Fetch 什么是 Fetch Fet…

CSS3开发总结(圆角、盒阴影、边界图片)

CSS3开发总结&#xff08;圆角&#xff09; 12/100 发布文章 qq_41913971 CSS31&#xff09;圆角 border-radius2&#xff09;盒阴影 box-shadow3&#xff09;边界图片 border-image-source1&#xff09;圆角 border-radius border-radius属性&#xff0c;复合属性。一个最多可…

深入理解Android的startservice和bindservice

一、首先&#xff0c;让我们确认下什么是service&#xff1f; service就是android系统中的服务&#xff0c;它有这么几个特点&#xff1a;它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高&#xff0c; 它比处于前台的应用优先级低&am…