使用百度定位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 ...
随机推荐
- Java入门到精通——框架篇之Hadoop概述
一.Hadoop来历 Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明了倒排索引算法,通过加入了Map ...
- 关于 C# 中接口的一些小结
< 关于 C# 中“接口”的一些小结 > 对于 C# 这样的不支持多重继承的语言,很好的体现的层次性,但是有些时候多重继承的确有一些用武之地. 比如,在 Stream 类 . 图形设备 ...
- 01.IDEA常用快捷键
[1.查找] 当前窗口基本查找 ----------- Ctrl + F 返回上次浏览的位置 ----------- Ctrl + Alt + Left 查找类 ----------- Ctrl + ...
- 05_Jedis操作Redis
[工程截图] [String类型操作] package com.higgin.string; import java.util.List; import redis.clients.jedis.Jed ...
- Dynamics CRM 批量新建域用户
好久没写了,今天大牛教了我偷懒的批量新建域用户的方法 是不是觉得 控制面板 =>管理工具=>用户和计算机=>Users=>新建用户,一个个建,很烦是不是,而且耗时,我上个项目 ...
- ICONIX Process
1.像rup,iconix是用例驱动的但是比rup更轻量级. iconix 仅仅使用四种diagram(用例图.健壮性图.时序图.类图)就可以把用例文本转成代码. 2.值得注意的健壮性分析图并不是u ...
- installed_oracle_can't_use
Preface 1.my server is windowsxp 2.database is the oralce 10g step A.CHECK SERVER 1.win + r cmd sqlp ...
- ORACLE不使用工具的情况下获取对象DDL
set line 200set pagesize 0set long 99999set feedback offset echo off获得表.索引.视图.存储过程.函数的DDL:select dbm ...
- OC static 和函数
#include <stdio.h> // 定义一个one函数 // 完整地定义一个外部函数需要extern关键字 //extern void one() { // printf(&quo ...
- Android(java)学习笔记25:Android 手机拨号
1. 手机拨号程序:(只有程序代码) package cn.itcast.phone; import android.app.Activity; import android.content.Inte ...