博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[微信开发] 微信JSAPI - 获取用户地理位置信息
阅读量:5462 次
发布时间:2019-06-15

本文共 3203 字,大约阅读时间需要 10 分钟。

 

参考博客

http://blog.csdn.net/u013142781/article/details/50503299

 

主要JS 方法

wx.getLocation

获取地理位置信息传递参数

成功后返回参数

 

根据返回经纬度打开地理位置网页

wx.openLocation 参数设置

 

关键代码:

后台 - 构造微信验证消息

private static String appId = PropertiesUtil.getValue("common.properties", "app.id");
       @RequestMapping(value = "/get_jsapi_ticket")    @ResponseBody    public Map
getJsapiTicket( HttpServletRequest request, HttpServletResponse response, HttpSession session, String url) throws IOException { Map
jsapiSignature = createJsapiSignature(url); jsapiSignature.put("appId", appId); return jsapiSignature; } public Map
createJsapiSignature(String url) { Map
map = new HashMap
(); //准备参数 String base_access_token = redisService.getBaseTokenFromRedis(appId, appSecret); JSONObject jsApiTicket = WeixinUtil.getJsApiTicket(base_access_token); String ticket = jsApiTicket.get("ticket").toString(); String timestamp = Long.toString(System.currentTimeMillis() / 1000); String nonceStr = createNonceStr(16); //sha1加密 String requesturl = "jsapi_ticket=" + ticket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url; log.info("requesturl=" + requesturl); String signature = SHA1(requesturl); log.info("signature=" + signature); map.put("timestamp", timestamp); map.put("nonceStr", nonceStr); map.put("signature", signature); return map; } /** * SHA、SHA1加密 * * @param str * @return */ public static String SHA1(String str) { try { MessageDigest digest = java.security.MessageDigest .getInstance("SHA-1"); //如果是SHA加密只需要将"SHA-1"改成"SHA"即可 digest.update(str.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexStr = new StringBuffer(); // 字节数组转换为 十六进制 数 for (int i = 0; i < messageDigest.length; i++) { String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); if (shaHex.length() < 2) { hexStr.append(0); } hexStr.append(shaHex); } return hexStr.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } /** * 构造随机字符串 * * @param length * @return */ private static String createNonceStr(int length) { String baseStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; StringBuffer temp = new StringBuffer(); Random random = new Random(); for (int i = 0; i < length; i++) { int number = random.nextInt(baseStr.length()); temp.append(baseStr.charAt(number)); } return temp.toString(); }

 

前端 - 发送请求并解析地理位置信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
绑定页获取我的位置信息

 

转载于:https://www.cnblogs.com/avivaye/p/8242027.html

你可能感兴趣的文章
个人工作总结2
查看>>
E - Valued Keys
查看>>
[WASM] Write to WebAssembly Memory from JavaScript
查看>>
[TypeScript] Model Alternatives with Discriminated Union Types in TypeScript
查看>>
[Redux] Filtering Redux State with React Router Params
查看>>
模块与包
查看>>
fragment的学习
查看>>
<context:annotation-config/>
查看>>
BZOJ4364: [IOI2014]wall砖墙(线段树)
查看>>
手动删除引用nuget如何还原
查看>>
Java8 Stream
查看>>
angular 中的 ? 和 !
查看>>
Java 线程池
查看>>
(unix domain socket)使用udp发送>=128K的消息会报ENOBUFS的错误
查看>>
C# WebRequest简单调用WebService方法
查看>>
Asp.net基础知识
查看>>
一个农民工自学java找到工作的励志故事
查看>>
Servlet生命周期方法,request.getRequestDispatcher
查看>>
jQuery wrap wrapAll wrapInner使用
查看>>
django的mysqldb的坑
查看>>