微信实现定位城市并获取城市编码
2017-09-15 10:56
633 查看
最近在做一个项目是将用户的当前所在市县定位出来并展示在手机端页面,同时还要获取到该市县的城市编码从而进行数据过滤,这里重点讲定位城市及获取城市编码
前端页面代码:
首先引用腾讯地图的一个js
同时在页面加载时调用下面js:
这里可以获取用户当前所在市县的经纬度,然后经过经纬度再去后台调用接口获取城市编码,我们看后台代码:
控制台打印输出:
将得到的数据封装成json返回前台即可
前端页面代码:
首先引用腾讯地图的一个js
<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js" ></script>
同时在页面加载时调用下面js:
$(function() { getLocation(); })
function getLocation() { var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp"); if (geolocation) { var options = {timeout: 8000}; geolocation.getLocation(onSuccess, onError, options); } else { alert("定位尚未加载"); } } //成功时 function onSuccess(position) { //经度 var longitude = position.lng; //纬度 var latitude = position.lat; var param = { longitude : longitude, latitude : latitude }; $.ajax({ type : "post", url : "getCode.jspx", data : param, dataType : "json", success : function(data) { alert(data.admCode); alert(data.adm); } }) } //失败时 function onError(error) { switch (error.code) { case 1: alert("位置服务被拒绝"); break; case 2: alert("暂时获取不到位置信息"); break; case 3: alert("获取信息超时"); break; case 4: alert("未知错误"); break; } }
这里可以获取用户当前所在市县的经纬度,然后经过经纬度再去后台调用接口获取城市编码,我们看后台代码:
@RequestMapping("/getCode.jspx") public String getCode(HttpServletRequest request,HttpServletResponse response, ModelMap model) { String longitude = request.getParameter("longitude"); String latitude = request.getParameter("latitude"); String add = getAdd(longitude, latitude); JSONObject jsonObject = JSONObject.fromObject(add); JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("addrList")); JSONObject j_2 = JSONObject.fromObject(jsonArray.get(0)); String allAdd = j_2.getString("admName"); String arr[] = allAdd.split(","); System.out.println("省:" + arr[0] + "\n市:" + arr[1] + "\n区:" + arr[2]); Map<String,String> map = new HashMap<String,String>(); if(arr[2] != null && !"".equals(arr[2])){ map.put("adm", arr[2]); }else if(arr[1] != null && !"".equals(arr[1])){ map.put("adm", arr[1]); }else{ map.put("adm", arr[0]); } String admCode = j_2.getString("admCode"); System.out.println(admCode); map.put("admCode", admCode); String json = JSONObject.fromObject(map).toString(); return json } public String getAdd(String log, String lat) { // lat 小 log 大 // 参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项) String urlString = "http://gc.ditu.aliyun.com/regeocoding?l=" + lat + "," + log + "&type=010"; String res = ""; try { URL url = new URL(urlString); java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { res += line + "\n"; } in.close(); } catch (Exception e) { System.out.println("error in wapaction,and e is " + e.getMessage()); } System.out.println(res); return res; }
控制台打印输出:
{"queryLocation":[34.797817,113.601715],"addrList":[{"type":"poi","status":1,"name":"郑州热电厂家属院(南门)","id":"ANB01730IC2W","admCode":"410102","admName":"河南省,郑州市,中原区,","addr":"","nearestPoint":[113.60046,34.79849],"distance":142.299}]} 省:河南省 市:郑州市 区:中原区 410102
将得到的数据封装成json返回前台即可
相关文章推荐
- 微信小程序----map组件实现(获取定位城市天气或者指定城市天气数据)
- 微信小程序实现城市定位:获取当前所在的国家城市信息
- 微信小程序城市定位的实现实例(获取当前所在国家城市信息)
- 微信环境中定位获取城市名称(基于thinkphp3.2)
- Android实现自动定位城市并获取天气信息
- 微信小程序 定位到当前城市实现实例代码
- 通过百度地图实现点击按钮获取定位城市并赋值给这个按钮
- JS获取手机经纬度,实现城市定位的方法
- 实现虽易,写好不易——小玩意也能体现编码功力,微信消息处理框架发布
- 通过google map api接口实现通过城市地点获取经纬度
- 实现获取指定城市的天气预报
- Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)
- iOS9获取所在城市的接口及解析(简单的NSURLSession使用和新的编码方法使用)
- 通过摄像机视频设备或者流媒体服务器SDK获取到数据转换成RTMP流实现网页/手机微信播放
- Web项目实现通过经纬度获取城市信息---利用百度地图
- 百度地图API实现自动定位城市,省市二联重新地图重新定位
- js实现文本内容光标定位,获取光标位置
- PHP利用新浪IP接口,来实现IP地址定位具体城市
- 微信小程序实现页面跳转传值以及获取值的方法分析
- Android 实现省份城市的选择,并获取城市编号