精华内容
下载资源
问答
  • 在delphixe10平台上开发,实现app端的实时位置定位查询
  • 微信小程序——使用微信内置地图查看位置 ... 获取当前位置4. 获取附近商家列表5. 点击商家查看详情6. 使用`微信内置地图`查看商家具体位置手动授权(用户拒绝后) 步骤 首先: 获取当前地理位置, 调...

    使用微信内置地图查看位置

    项目需求: 根据当前的定位位置,查看附近有哪些商家,并可查看商家具体位置。

    步骤

    效果图

    说明:
    1. 如图展示 点击拒绝后,显示授权获取位置按钮, 用户触发按钮时,拉起设置位置信息页面。
    2. 点击允许授权,显示商家列表,点击某商家可查看具体位置
    在这里插入图片描述

    具体实现

    说明: 这里分步骤说明,直接copy可使用。

    wxml

    <view class="nearbyBizListWrap" style='margin-top: {{navH}}px'>
        <block wx:if="{{postion}}">
            <view wx:if="{{!is_empty}}">
                <view class="media_list_Box">
                    <view wx:for="{{nearbyListData}}" wx:key="" bindtap='distributionBIZTap' data-bizId='{{item.business_id}}'>
                        <view class='media_item'>
                            
                            
                        </view>
                    </view>
                    <view class="nullDataTips" wx:if="{{!hasMoreData}}">
                        <text>没有更多数据了</text>
                    </view>
    
                    <view class="nullDataTips" wx:if="{{hiddenLoading}}">
                        <text>正在加载中...</text>
                    </view>
                </view>
            </view>
            <view class="nullBox clearfix" wx:else>
                <view class="box">
                    <view class="des">暂无附近场所</view>
                </view>
            </view>
        </block>
    
        <!-- 显示授权按钮 -->
        <block wx:else>
            <view class="authorizationBox">
                <button hidden="{{hideAuthBtn}}" open-type="openSetting" bindopensetting='handler' class="weui-btn btn-area" type="primary">点击授权并获取位置信息 </button>
            </view>
        </block>
    </view>
    

    js

    1. 初始数据及调用

    data: {
    	p: 1,
        page_size: 8,
        is_empty: false,
        hasMoreData: true,
        hiddenLoading: true,
        lng: 0.00, //经度
        lat: 0.00, //纬度
        hideAuthBtn: true//控制是否显示 手动授权按钮
        postion: true, //是否授权, 已授权展示商家列表
    }
    
    /**
    * 生命周期函数--监听页面显示
    */
    onShow: function() {
        // 检查当前用户设置权限状态
        this.check_Authorization();
    },
    

    2. 获取用户当前设置

    说明: 首先检查用户是否授权状态, 只有授权成功会执行获取当前地理位置信息。方可以查看附近商家列表。

    /**
    * 获取用户当前设置
    */
    check_Authorization: function() {
        var that = this;
        wx.getSetting({
            success: (res) => {
                if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] == true) {
                    that.setData({
                        postion: true,
                    })
                    
                    //获取当前位置
                    that.getLocation();
                } else {
                    //未授权
                    that.setData({
                        postion: false
                    })
                    
                    //获取当前位置
                    that.getLocation();
                }
            },
            fail(res) {
                console.log(res)
            }
        })
    },
    

    3. 获取当前位置

    /**
    * 调用wx.getLocation系统API,获取当前地理位置
    */
    getLocation: function() {
        var that = this;
        //获取位置
        wx.getLocation({
            type: 'gcj02', //默认为 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标
            success: function(res) {
                that.setData({
                    postion: true,
                })
                // 保存经纬度
                that.setData({
                    lng: res.longitude,
                    lat: res.latitude,
                })
    
                // 获取附近商家列表
                that.getnearbyList(true);
            },
            fail: function(e) {			
                //首次弹窗提示授权,点击取消后,显示手动授权按钮
                that.setData({
                    hideAuthBtn: false
                })
            }
        });
    },
    

    4. 获取附近商家列表

    • 发送请求,获取数据。个人所需,这里直接copy项目里代码,包含分页功能。
    • 注意: 下面的url地址仅供参考,需修改为实际所用的
    • 如需测试数据,请看后台返回数据格式效果图
    getnearbyList: function(type = true) {
        var that = this;
        var params = 'p=' + that.data.p + '&page_size=' + that.data.page_size + '&lng=' + that.data.lng + '&lat=' + that.data.lat;
    	// 发送请求
        http.getReq("Nearby/nearbyList?" + params, function(res) {
            if (res.code != 200) {
                feedbackApi.showToast({
                    title: res.msg,
                    mask: false
                })
                return
            }
            var datas = res.data.list;
            var dataList = that.data.nearbyListData.concat(datas);
    
            that.setData({
                nearbyListData: dataList,
                hiddenLoading: true,
                p: that.data.p + 1
            })
    
            if ((datas.length != that.data.page_size) && (datas.length > 0)) {
                //全部加载完成,显示没有更多数据
                that.setData({
                    hasMoreData: false,
                    hiddenLoading: false
                });
            }
    
            //  处理显示加载中
            if (datas.length == 0) {
                that.setData({
                    hiddenLoading: false,
                    hasMoreData: false,
                });
            }
            if (dataList.length == 0) {
                that.setData({
                    is_empty: true,
                });
            }
        }, type)
    },
    

    5. 点击商家查看详情

    • 根据列表中数据,获取当前点击商家并得到对应信息
    /**
    * 查看具体商家信息
    */
    distributionBIZTap: function(e) {
        var that = this;
        //商家当前id
        var bizid = e.currentTarget.dataset.bizid;
        this.data.nearbyListData.forEach((item, i) => {
            if (item.business_id == bizid) {
                // 调用打开目标位置(打开地图)
                that.openLocation(item);
            }
        })
    },
    

    6. 使用微信内置地图查看商家具体位置

    注意: 度只接收Number类型, 因得到是String类型,这里需要转换下。

    /**
    * 使用微信内置地图查看商家位置
    */
    openLocation: function(item) {
        // console.log(item);
        var that = this;
        wx.getLocation({ //获取当前经纬度
            type: 'gcj02', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息  
            success: function(res) {
                wx.openLocation({ //使用微信内置地图查看位置。
                    latitude: Number(item.lat), //目标纬度
                    longitude: Number(item.lng), //目标经度
                    name: item.shop_name, //店铺名
                    address: item.address //详细地址
                })
            }
        })
    },
    

    手动授权(用户拒绝后)

    • 用户取消了授权, 短时间内不会再弹窗的, 为会更好体验,再次进入页面时显示按钮,让用户触发。

    • 通过button按钮,并设置open-type="openSetting",调起设置允许使得我的地理位置

    /**
    * 手动授权
    */
    handler: function(e) {
        var that = this;
        if (!e.detail.authSetting['scope.userLocation']) {
            that.setData({
                postion: false
            })
        } else {
            that.setData({
                postion: true,
            })
        }
    },
    

    后端返回数据格式效果图

    上面第4点获取附近商家列表,接口返回的数据格式,仅供参考
    在这里插入图片描述

    注意:

    • 这时,如果直接运行代码会提示需声明permission字段。那就按照提示操作吧~~~

    • 需配置permission弹窗提示
      在这里插入图片描述

    • app.json中声明permission字段, 如下

    "permission": {
        "scope.userLocation": {
            "desc": "需要获取您的地理位置,请确认授权,否则地图定位功能将无法使用"
        }
    },
    "sitemapLocation": "sitemap.json"
    

    原码下载

    原码下载: 请查看

    展开全文
  • } </style> </head> <body> 当前位置:正在定位..."/> <br /> 请输入:;" /></div> ;width:150px;height:auto; display:none;"></div> <br /> ;height: 500px;"></div> <div id="r-result"></div> ...

    先看下效果图,因为没有美化,只是做一下功能。
    在这里插入图片描述在这里插入图片描述完整代码如下

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
        <script src="../../jss/jquery-1.9.1.min.js"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=your baidu keys"></script>
     
        <title>百度地图的定位</title>
        <style type="text/css">
            input{border:1px solid #dddee1;border-radius:5px;height:30px; width:90%;}
        </style>
    </head>
    <body>
        当前位置:<input  type="text"   id="txtposition" value="正在定位..."/>
     
        <br /><br />
        <div id="r-result">请输入:<input type="text" id="suggestId" size="20" value="" style="width:350px;" /></div>
        <div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>
        <br /><br />
        <div id="allmap" style="width: 100%;height: 500px;"></div>
        <div id="r-result"></div>
     
        <script type="text/javascript">
        // 百度地图API功能
        var map = new BMap.Map("allmap");
        var point = new BMap.Point(118.778, 32.05);
        map.centerAndZoom(point,12);
        map.enableScrollWheelZoom();                            // 启用滚轮放大缩小
        map.addControl(new BMap.NavigationControl());           // 启用放大缩小 尺
        var geolocation = new BMap.Geolocation();
            //自动定位
        geolocation.getCurrentPosition(function (r) {
            console.log(r.point);
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                var mk = new BMap.Marker(r.point);
                map.addOverlay(mk);//标出所在地
                map.panTo(r.point);//地图中心移动
                mk.addEventListener("dragend", showInfo);
                mk.enableDragging();    //可拖拽
                var point = new BMap.Point(r.point.lng,r.point.lat);//用所定位的经纬度查找所在地省市街道等信息
                var gc = new BMap.Geocoder();
                gc.getLocation(point, function (rs) {
                    console.log(rs);
     
                    var addComp = rs.addressComponents;
                    console.log(rs.address);//地址信息
                    document.getElementById("txtposition").value = rs.address;
                    // alert(rs.address);//弹出所在地址
                    var label = new BMap.Label(rs.address, { offset: new BMap.Size(20, -10) });
                    map.removeOverlay(mk.getLabel());//删除之前的label
     
                    mk.setLabel(label);
                });
                function showInfo(e) {
                    var gc = new BMap.Geocoder();
                    gc.getLocation(e.point, function (rs) {
                        var addComp = rs.addressComponents;
                        var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;//获取地址
                        document.getElementById("txtposition").value = rs.address;
                        //画图 ---》显示地址信息
                        var label = new BMap.Label(address, { offset: new BMap.Size(20, -10) });
                        map.removeOverlay(mk.getLabel());//删除之前的label
     
                        mk.setLabel(label);
     
                    });
                }
            }else {
                alert('failed'+this.getStatus());
            }
        }, { enableHighAccuracy: true })
        
        // 百度地图API功能
        function G(id) {
          
            return document.getElementById(id)
        }
     
        var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
            {"input" : "suggestId"
            ,"location" : map
            });
     
        ac.addEventListener("onhighlight", function(e) {  //鼠标放在下拉列表上的事件
            var str = "";
            var _value = e.fromitem.value;
            var value = "";
            if (e.fromitem.index > -1) {
                value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            }   
            str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
             
            value = "";
            if (e.toitem.index > -1) {
                _value = e.toitem.value;
                value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            }   
            str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
            G("searchResultPanel").innerHTML = str;
        });
     
        var myValue;
        ac.addEventListener("onconfirm", function(e) {    //鼠标点击下拉列表后的事件
            var _value = e.item.value;
            myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
             
            setPlace();
        });
     
        function setPlace() {
            map.clearOverlays();    //清除地图上所有覆盖物
            function myFun() {
                var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
                map.centerAndZoom(pp, 18);
                map.addOverlay(new BMap.Marker(pp));    //添加标注
            }
            var local = new BMap.LocalSearch(map, { //智能搜索
                onSearchComplete: myFun
            });
            local.search(myValue);
        }
       
        </script>
     
     
    </body>
    </html>
    

    注释:上面代码只需自己复制,然后修改下百度的keys就可以了,其他无需修改

    展开全文
  • 前言 本文主要介绍百度地图中自动定位当前的功能,然后可以指定起始位置查询公交。 源码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content...

    前言

    本文主要介绍百度地图中自动定位到当前的功能,然后可以指定起始位置查询公交。

    源码

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css"> body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";font-size:14px;} #l-map{height:600px;width:100%;} #r-result,#r-result table{width:100%; clear:both;} #routePanel p{float:left;} </style>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=DDd05fcba9fea5b83bf648515e04fc4c"></script>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
        <title>多终点选择的公交换乘查询</title>
    </head>
    <body>
        <div id="l-map"></div>
        <div id="routePanel">
            <p style="margin-right:10px;">起点:<span><input type="text" id="start"></input></span></p>
            <p>终点:<span id="B_PointName1"><input type="text" id="end"></input></span></span>
            <button onclick="search()">查询</button>
        </div>
        <div id="r-result" style="display:none;"></div>
    </body>
    </html>
    <script type="text/javascript"> var map = new BMap.Map("l-map"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 12); map.enableScrollWheelZoom(); //定位到当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); map.addOverlay(mk); map.panTo(r.point); //alert('您的位置:'+r.point.lng+','+r.point.lat); } else { alert('failed'+this.getStatus()); } },{enableHighAccuracy: true}) //关于状态码 //BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。 //BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。 //BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。 //BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。 //BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。 //BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。 //BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增) //BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增) //BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增) var transit = new BMap.TransitRoute(map, { renderOptions: {map: map, panel: "r-result"}, onResultsHtmlSet : function(){$("#r-result").show()} }); function search() { var start = $("#start").val() ,end = $("#end").val(); transit.search(start,end); } </script>
    

    测试结果

    这里写图片描述

    总结

    根据百度的一些API,完全可以做出自己个性化的导航系统,有兴趣的朋友可以深入研究。相关百度提供的参考资料:http://developer.baidu.com/map/jsdemo.htm#i8_3

    转载于:https://my.oschina.net/u/3702584/blog/1547194

    展开全文
  • 有的时候我们需要查询访问我们系统的IP的地址,并且记录下访问IP的物理地址。但是用接口调用不稳定,如:淘宝的地址 http://ip.taobao.com/service/getIpInfo.php?ip=180.169.29.21 所以我们提供一个IP定位库。 ...

    有的时候我们需要查询访问我们系统的IP的地址,并且记录下访问IP的物理地址。但是用接口调用不稳定,如:淘宝的地址

    http://ip.taobao.com/service/getIpInfo.php?ip=180.169.29.21

    所以我们提供一个IP定位库。

    首先,提供一个jar包。

    compile group: 'org.lionsoul', name: 'ip2region', version: '1.7.2'

    并且提供定位库:

    参考地址:https://blog.51cto.com/14309075/2390060

    其次:查找用户的IP。

    /**
    	 * 获取IP地址
    	 *
    	 * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
    	 * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
    	 */
    	public static String getIpAddr(HttpServletRequest request) {
    		String ip = null;
    		try {
    			ip = request.getHeader("x-forwarded-for");
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("WL-Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_CLIENT_IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getRemoteAddr();
    			}
    		} catch (Exception e) {
    			logger.error("IPUtils ERROR ", e);
    		}
    		return ip;
    	}

    查询出IP地址后,这样我们根据IP地址查询物理地址。

    import org.apache.commons.lang3.StringUtils;
    import org.lionsoul.ip2region.DataBlock;
    import org.lionsoul.ip2region.DbConfig;
    import org.lionsoul.ip2region.DbSearcher;
    import org.lionsoul.ip2region.Util;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.lang.reflect.Method;
    
    /**
     * IP地址
     */
    public class IPUtils {
    
    	private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
    
    	/**
    	 * 获取IP地址
    	 * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
    	 * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
    	 */
    	public static String getIpAddr() {
    		String ip = null;
    		try {
    			HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    			ip = request.getHeader("x-forwarded-for");
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("WL-Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_CLIENT_IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getRemoteAddr();
    			}
    		} catch (Exception e) {
    			logger.error("IPUtils ERROR ", e);
    		}
    		// 使用代理,则获取第一个IP地址
    		if (StringUtils.isNotEmpty(ip) && ip.length() > 15) {
    			if (ip.indexOf(",") > 0) {
    				ip = ip.substring(0, ip.indexOf(","));
    			}
    		}
    		return ip;
    	}
    
    	/**
    	 * 获取IP地址
    	 *
    	 * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
    	 * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
    	 */
    	public static String getIpAddr(HttpServletRequest request) {
    		String ip = null;
    		try {
    			ip = request.getHeader("x-forwarded-for");
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("WL-Proxy-Client-IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_CLIENT_IP");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    			}
    			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
    				ip = request.getRemoteAddr();
    			}
    		} catch (Exception e) {
    			logger.error("IPUtils ERROR ", e);
    		}
    		return ip;
    	}
    
    	/**
    	 * 根据IP地址查询所在物理位置
    	 *
    	 * @param ip
    	 * @return
    	 */
    	public static String getAddress(String ip){
    
    		String dbPath = IPUtils.class.getResource("/ip2region.db").getPath();
    
    		File file = new File(dbPath);
    
    		if ( file.exists() == false ) {
    			System.out.println("Error: Invalid ip2region.db file");
    		}
    
    		//查询算法
    		int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
    		//DbSearcher.BINARY_ALGORITHM //Binary
    		//DbSearcher.MEMORY_ALGORITYM //Memory
    		try {
    			DbConfig config = new DbConfig();
    			DbSearcher searcher = new DbSearcher(config, dbPath);
    
    			//define the method
    			Method method = null;
    			switch ( algorithm )
    			{
    				case DbSearcher.BTREE_ALGORITHM:
    					method = searcher.getClass().getMethod("btreeSearch", String.class);
    					break;
    				case DbSearcher.BINARY_ALGORITHM:
    					method = searcher.getClass().getMethod("binarySearch", String.class);
    					break;
    				case DbSearcher.MEMORY_ALGORITYM:
    					method = searcher.getClass().getMethod("memorySearch", String.class);
    					break;
    			}
    
    			DataBlock dataBlock = null;
    			if ( Util.isIpAddress(ip) == false ) {
    				logger.error("Error: Invalid ip address");
    			}
    
    			dataBlock  = (DataBlock) method.invoke(searcher, ip);
    			String address=dataBlock.getRegion();
    			System.out.println("address====>"+address);
    			String countryName=address.substring(0,2);
    			String provinceName=address.substring(5,8);
    			String cityName=address.substring(9,12);
    			System.out.println("countryName="+countryName+",provinceName="+provinceName+",cityName="+cityName);
    			return dataBlock.getRegion();
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		return null;
    	}
       public static void main(String[] args){
    	   getAddress("42.203.192.25");
       }
    }
    

    最后。根据地址信息查询天气信息

     @CrossOrigin(origins = "*")
        @ApiOperation(value="今日天气")
        @RequestMapping(name = "今日天气", value = {"/todayWeather"}, method = RequestMethod.GET)
        public Result todayWeather(HttpServletRequest request)throws Exception{
            //根据ip查询当前地址
            String ip= IPUtils.getIpAddr(request);
            //根据ip查询当前地址
            /*String addressUrl="http://ip.taobao.com/service/getIpInfo.php?ip=";
            logger.info("当前机器的ip地址是:"+ip);
            if(ip!=null){
                addressUrl+=ip;
            }else{
                addressUrl= "http://ip.taobao.com/service/getIpInfo.php?ip=180.169.29.210";
            }
            Response addressResponse=OkHttpUtils.get(addressUrl);
            ResponseBody addressResponseBody=addressResponse.body();
            if(addressResponse.isSuccessful()&&addressResponseBody!=null){
                String addressInfo=addressResponseBody.string();
                logger.info("当前地址信息是:"+addressInfo);
            }*/
            //根据IP地址查询IP所在位置
            String address=IPUtils.getAddress(ip);
            logger.info("ip地址====>"+address);
            String cityId=null;
            if(address!=null&&!address.contains("内网IP")){
                String cityName=address.substring(9,12);
                List<SysArea> sysAreas=sysAreaService.getAreas(cityName);
                if(sysAreas!=null&&sysAreas.size()>0){
                    cityId=sysAreas.get(0).getCityId();
                }else{
                    cityId="101021300";
                }
            }else{
                cityId="101021300";
            }
    
            Map<String,Object> weatherMap=new HashMap<>();
            //查询天气1
            String url="http://www.weather.com.cn/data/cityinfo/"+cityId+".html";
            Response response=OkHttpUtils.get(url);
            ResponseBody responseBody=response.body();
            if(response.isSuccessful()&&responseBody!=null){
                String info=responseBody.string();
                JSONObject jsonObject=JSONObject.parseObject(info);
                JSONObject weatherinfo=JSONObject.parseObject(jsonObject.get("weatherinfo").toString());
                String imgUrl="http://www.weather.com.cn/m2/i/icon_weather/29x20/";
                //当前城市
                weatherMap.put("city",weatherinfo.get("city"));
                //天气图片
                weatherMap.put("pic1",imgUrl+weatherinfo.get("img1"));
                weatherMap.put("pic2",imgUrl+weatherinfo.get("img2"));
                //天气范围
                weatherMap.put("tempRegion",weatherinfo.get("temp1")+"--"+weatherinfo.get("temp2"));
                //当前天气
                weatherMap.put("weather",weatherinfo.get("weather"));
            }else{
                return Result.failure("今日天气失败");
            }
            //查询天气2
            String url1="http://www.weather.com.cn/data/sk/101010100.html";
            Response response1=OkHttpUtils.get(url1);
            ResponseBody responseBody1=response1.body();
            if(response1.isSuccessful()&&responseBody1!=null){
                String info=responseBody1.string();
                JSONObject jsonObject1=JSONObject.parseObject(info);
                JSONObject weatherinfo1=JSONObject.parseObject(jsonObject1.get("weatherinfo").toString());
                //当前温度
                weatherMap.put("temp",weatherinfo1.get("temp"));
                //风向
                weatherMap.put("WD",weatherinfo1.get("WD"));
                //风级
                weatherMap.put("WS",weatherinfo1.get("WS"));
                //相对湿度SD
                weatherMap.put("SD",weatherinfo1.get("SD"));
                return Result.ok("查询天气成功",weatherMap);
            }else{
                return Result.failure("今日天气失败");
            }
        }

     

    展开全文
  • 能在地图上显示当前位置。支持经纬度查询。可开启反向显示经纬度功能。这是app的源码。源码中可以开启后台发短信功能。可以开启基站定位功能和GPS定位功能,或者二选一等。(仅供功能实现,切勿用于非法用途!)
  • 产品特点:*显示设备MAC地址和设备IP地址(内网IP )*自动检测和找到你真正的公网IP地址(数据来自 ipmap.net)*查询您输入自定义IP地址的详细信息*具有自动方向的IP位置地图从当前位置到IP地址注册地址标注地图(谷歌...
  • 旅游网站根据定位推荐旅游景点,新闻App通过地理位置推荐当地新闻,社交类的App通过位置交友,iOS中实现以上功能需要一个核心的框架CoreLocation,框架提供了一些服务可以获取和定位用户当前位置。服务会通过一种...
  • 麻烦问一下老师,我要在django中实现:从数据库中找到距离当前gps位置最近的数据信息,应该如何实现呢?查询语句不会写,网上也找不到。数据模型如下:class Block(models.Model):""“小区”""name = models....
  • LAC CellID基站定位查询技术介绍

    千次阅读 2012-12-14 17:43:00
    手机每时每刻都与最近的基站保持联系,所以知道了当前基站的位置,也就知道了手机的大概位置。这种技术是目前最简单的定位技术, 著名的Google手机地图也用这个原理来定位。相对于GPS,基站定位有一定的误差,误差的...
  • iOS获取当前位置经纬度

    千次阅读 2015-01-12 14:37:06
    最近在做一个公交车查询的项目,需要定位当前位置以便进行附近站点查询,和大家分享一下怎样获取自己当前位置的经纬度 首先添加CoreLocation.framework库: 引用头文件并声明CLLocationManagerDelegate代理: 接...
  • 功能如下:打开时自动定位当前位置(浏览器可能会屏蔽自动定位功能,建议手机查看,或直接打开地址:http://1.jingcode.applinzi.com/test2.html),输入目的地点击搜索后,显示当前位置和目的地之间的线路图。...
  • 论文题目:基于位置的信息查询系统的分析...本题目便是要根据手机定位功能设计和实现一个基于位置的信息服务系统,比如查询用户当前所在的位置,距离用户周围最近的餐厅,到某一目的地的最短路线,城市公交查询等。...
  • //自动定位当前位置 function showCityInfo() { //实例化城市查询类 var citysearch = new AMap.CitySearch(); //自动获取用户IP,返回当前城市 citysearch.getLocalCity(function(status, result) { if ...
  • 2 定位当前位置查询天气 或者查询列表以及其他城市的天气 1) HttpCallbackListener定义一个接口 package com.example.d99; public interface HttpCallbackListener { void onFinish(String response); ...
  • 今天给大家分享的是一个定位方面的黑科技工具,它可以输入手机号定位TA当前位置,也可以查看TA的运动路线轨迹。有了它你可以给你想要关注的人比如老人、儿童等安装,就可以知道他们在哪,不怕走丢。当然,也可以...
  • case描述 滴滴出现是一款非常好用的APP,解决了日常用户的出行需求,产品的背后需要非常精湛的技术支持,其中一项技术叫附近查找,附近查找...我们的货车业务一样需要用到附近查找的技术,通过定位当前用户的位置,...
  • 泄露自己的ip地址的真实信息,就会被收录进数据库,这样被查询时就会精准定位到真实地址,还有一些固定ip,如网吧、政府机关单位,也都是比较准,如果我们想要知道具体的地理位置,不妨来尝试下面的这种方式。...
  • 需求:当进入地图页面,定位当前位置,显示点坐标,搜索框显示当前坐标的具体位置。点击地图,搜索框显示点击坐标的具体位置,搜索后地图中心点为搜索后的位置。 <template> <div> <div class="a...
  • 查询手机所在地理位置的简单方法

    千次阅读 2011-07-26 11:36:29
    对于没有GPS功能的手机,要想知道当前所在地理位置,可以通过基站定位。具体有以下几种方法:1、直接查看基站编号 使用某些手机的工程模式,或者利用专门的软件(比如S60下的CellTrack)可以直接查看
  • 写的还是比较慢的这就很尴尬,不管了抓紧写,要不然,下周就比较尴尬了上一节中,我们引入了地图,sdk,我一次性的引入了,3d地图,位置查询,周边搜索的sdk所以这次不需要引入其他东西,可以直接进行开发(午休的...
  • 注意:如果在系统选项中未打开GPS,Android为自动切换为基站定位,基站定位需要查询互联网,在网络不可用的情况下,取得的坐标永远是上一次位置服务可用时取得的最后一次有效坐标。 阅读全文 更多精彩原创文章...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 380
精华内容 152
关键字:

当前位置定位查询