使用百度定位Api获取当前用户登录地址
最近在做一个商城项目,客户想把网站做成类似于美团的效果,切换地区时,内容也跟随变化.这就要首先解决根据用户id获得地址的问题,最终决定使用百度定位(不适用于搭建反向代理的项目)
String url = request.getRemoteAddr();
// url = "58.56.23.118"; //本地代码测试ip,使用本地公网
// 这里调用百度的ip定位api服务 详见 ak需要申请
// http://api.map.baidu.com/lbsapi/cloud/ip-location-api.htm
org.json.JSONObject json = readJsonFromUrl("http://api.map.baidu.com/location/ip?ak=马赛克部分&ip="
+ url);
// json.get("content")).get("address"));
// status状态为2,表示没有获取到地区信息
if ((Integer) json.get("status") != 2) {
/*
* Object adress = ((org.json.JSONObject)
* json.get("content")) .get("address");
*/
// "address_detail":{"province":"山东省","city":"济南市","street":"","district":"","street_number":"","city_code":288},"address":"山东省济南市","
Object adress = null;
if(json.get("content") != null && ((org.json.JSONObject)json.get("content")).get("address_detail") != null)
{
adress = ((JSONObject) ((org.json.JSONObject) json
.get("content")).get("address_detail")).get("city");
String areaName = (String) adress; //获取到市级城市名称
//request.getSession().setAttribute("area_name", areaName);
Map params = new HashMap();
params.put("areaName", areaName);
List<Area> areas = this.areaService
.query("select obj from Area obj where obj.areaName=:areaName",
params, -1, -1); if (areas.size() > 0 && areas != null) {
Area area = areas.get(0);
area_id = area.getId().longValue();
request.getSession().setAttribute("area_id", area_id);
request.getSession()
.setAttribute("area_name", areaName);
mv.addObject("area_id", area_id);
mv.addObject("adress", adress);
}
}
else
{
//mv.addObject("adress", "中国大区");
area_id = null;
request.getSession().setAttribute("area_name", "中国大区");
}
上述代码有原项目代码, 定位精确到市级,获取不到地址时默认中国大区,除定位部分外其他不用理会.
上述代码用到的工具类 readJsonFromUrl()
public static org.json.JSONObject readJsonFromUrl(String url)
throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is,
Charset.forName("UTF-8")));
String jsonText = readAll(rd);
org.json.JSONObject json = new org.json.JSONObject(jsonText);
return json;
} finally {
is.close();
// System.out.println("同时 从这里也能看出 即便return了,仍然会执行finally的!");
}
}
功能完成时,登录网站首页显示效果:

使用百度定位Api获取当前用户登录地址的更多相关文章
- 【百度地图API】让用户选择起点和终点的驾车导航
原文:[百度地图API]让用户选择起点和终点的驾车导航 摘要: 如果用户搜索“从机场到火车站”,使用驾车导航DrivingRoute会默认显示一条结果.但同一个城市可能有多个机场和火车站,那么,如何用 ...
- Android百度定位API的使用
导入库文件 在下载页面下载最新的库文件.将liblocSDK2.4.so文件拷贝到libs/armeabi目录下.将locSDK2.4.jar文件拷贝到工程根目录下,并在工程属性->Java B ...
- HTML5调用百度地图API获取当前位置并直接导航目的地的方法
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8&quo ...
- PhoneGap Geolocation结合百度地图api获取地理位置api
一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...
- HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"&g ...
- Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过百度地图API获取位置
通过第三方库exifread读取照片信息.exifread官网:https://pypi.org/project/ExifRead/ 一.安装exifreadpip install exifread ...
- PHP 获取客户端用户 IP 地址
一般情况下可以使用以下代码获取到用户 IP 地址 echo 'User IP - '.$_SERVER['REMOTE_ADDR']; // 服务器在局域网的话,那么显示的则是内网IP .// 如果服 ...
- 百度地图api之----根据用户ip定位城市
LocalCity 这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(funct ...
- 百度地图API获取数据
目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费AP ...
随机推荐
- 嵌入式开发 MCU
From: http://www.infoq.com/cn/articles/intelligent-embedded-os-Internet-of-things-and-robots 嵌入式开发是一 ...
- Android StickHeaderRecyclerView - 让recyclerview头部固定
介绍在项目中有时会需要recyclerview滑动式时某个view滑出后会固定在头部显示,比较常用的比如手机联系人界面.地区选择界面等. StickHeaderRecyclerView就是实现这个功能 ...
- 搭建 Spring 2.5.6 开发环境
1.jar 包准备: spring 2.5.6 的 jar 包(链接: http://pan.baidu.com/s/1skVFfcx 密码: mbiz),如图: commons-logging-1. ...
- CentOS7 查询已安装的包方便整理 /卸载
以PHP为例.首先查看已安装的PHP rpm -qa |grep php 输出结果: php-cli--.el7.x86_64 php-common--.el7.x86_64 查询rpm包的安装时间和 ...
- VSCode cpptools 插件在Centos 7下不能正确显示符号列表的解决办法
vscode 的插件cpptools 0.9.3 需要glibc 2.18的版本,但是Centos 7 下没有这个版本的GLIBC,所以导致链接库丢失,后台服务不能正常运行.按以下步骤操作可修复此问题 ...
- Orchard Core 文档翻译 (三) Orchard Core Modules
原文连接:https://www.cnblogs.com/Qbit/p/9746442.html 转载请注明出处 介绍 Orchard Core Modules库提供了一种机制,可以拥有一个独立的模块 ...
- 用 dbgrid 或 dbgrideh 如何让所显示数据自动滚动
procedure TForm1.Timer1Timer(Sender: TObject);varm:tmessage;begin m.Msg:=WM_VSCROLL; m.WParamLo:=SB_ ...
- python入门16 递归函数 高阶函数
递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...
- Multi-Thread 1: how to use synchronized
1. synchronized If two threads are using the same function( here we use output to print out string) ...
- Codeforces Round #513
A. Phone Numbers 题意:给一些数字,每个电话号码以8开头,11位,求最多组成多少个号码,重复累加. #include <bits/stdc++.h> using names ...