使用百度定位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的!");
        }
    }

功能完成时,登录网站首页显示效果:

时间: 2024-08-06 23:38:51

使用百度定位Api获取当前用户登录地址的相关文章

Android之百度定位API使用

API版本: 百度定位API:V5.0(http://developer.baidu.com/map/wiki/index.php?title=android-locsdk/guide/v5-0) 百度Geocoding API:V2.0(http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-geocoding#7..E9.80.86.E5.9C.B0.E7.90.86.E7.BC.96.E7.A0.81.E

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地(转)

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地 我是应用在微信中,自定义菜单,菜单直接链接到这个HTML5页面,获取当前位置后,页面中定好目的地,这样打开页面后直接进入导航页面 可以省下先发送位置信息后,点确定再出导航,省一步, <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"> <meta name="viewpor

PhoneGap Geolocation结合百度地图api获取地理位置api

一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然后复制密钥到这个页面即可 4.使用PhoneGap Geolocation 获取地理位置获取到的经度和纬度赋值给point即可 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

根据百度地图API获取指定地点的经纬度

做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用 package com.hpzx.data; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.n

百度地图api之----根据用户ip定位城市

LocalCity 这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(function (result){ var city= result.name; //do something according to the city }); 百度地图的api写得很详细,我只是想在这里记录下有这个 LocalCity 服务 可以直接根据ip 获取当前ip所在的城市.这个对于某些只需要获

HTML5 利用百度地图API获取当前位置

由于项目需要定位到城市,研究了地理定位,做了一些手记,和大家分享一下~ 项目的开发需求是获取到当前用户的位置,然后为用户提供一些服务. 此时可以采用两种定位方式,一种是用GPS的定位,然后将定位到的经纬度传递到百度地图的API接口当中.另一种方法是利用百度API接口,使用IP地址定位,然后使用IP地址获取到的经纬度,传递到百度地图API接口中. 自己尝试使用了这两种方式进行定位.相对来说,IP地址定位,偏差比较大.GPS定位虽然还可以,但是也不足够精确.产生比较大偏差的原因有可能是以下几点造成的

利用百度地图API获取当前位置信息

利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: 1 <script type="text/javascript"> 2 var map; 3 var gpsPoint; 4 var baiduPoint; 5 var gpsAddress; 6 var baiduAddress; 7 var x; 8 var y; 9 function getLocation() { 10 //根据IP获取城市 1

百度地图API获取数据

目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费API获取数据的还有很多,包括新浪.豆瓣电影.饿了么.阿里.腾讯等今天使用百度地图API来请求我们想要的数据. 第一步.注册百度开发者账号 注册成功后就可以获取到应用服务AK也就是API秘钥,这个是最重要的,应用名称可以随便取,如果是普通用户一天只有2000调用限额,认证用户一天有10万次调用限额 在百

java如何获取其它用户登录的真是IP地址

获取其它用户的ip,可能会遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1,这是为什么呢,照道理讲,应该是127.0.0.1才对,为什么这个获取的值变成了ipv6了呢,而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),后来上网查了查原因,原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\system32\drivers\etc\ hosts这个文件),只需要