微信开发获取地理位置实例(java,非常详细,附工程源码)

小程序定位功能开发 小程序端的定位是通过手机的定位模块进行定位,定位成功获取经纬度坐标,平台根据经纬度坐标请求地图服务获取经纬度坐标对应的具体位置。小程序首先通过微信提供的方法拿到经纬度坐标,然后请求后端获取具体的位置,后端会请求高德地图根据经纬度获取具体的城市信息。 阅读详情

在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础:

1、微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一些必要的配置,以及如何调用微信接口。

2、微信开发之通过代理调试本地项目,该文章详细讲解了如何调试本地项目,使用工具的详细安装与配置。

3、微信开发之使用java获取签名signature(贴源码,附工程),该文详细讲些了如何获取签名,代码十分详细。

对于初学者,可能还不知道订阅号、服务号、和企业号的区别,博主之前也是一直没有弄清楚,因此查阅资料整理了一篇博客供大家阅读:微信服务号、订阅号和企业号的区别(运营和开发两个角度)。建议有时间得猿友还是阅读一下为好。

上面的文章内容虽然有点多而且繁琐,看完之后不敢说已经入门,但是初步了解,自己写实例是没有问题的。不积跬步无以至千里,希望猿友们耐心继续下去!!!!!!

上面的文章内容虽然有点多而且繁琐,看完之后不敢说已经入门,但是初步了解,自己写实例是没有问题的。不积跬步无以至千里,希望猿友们耐心继续下去!!!!!!

上面的文章内容虽然有点多而且繁琐,看完之后不敢说已经入门,但是初步了解,自己写实例是没有问题的。不积跬步无以至千里,希望猿友们耐心继续下去!!!!!!

期间可能会遇到一些坑,欢迎与博主评论交流

有了上面的基础,接下来博主将分享一个具体的微信开发实例,获取用户当前的地理位置。

一、结果演示

这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述

二、代码及代码讲解

本工程使用的环境是Eclipse + maven + springmvc,下面附上关键代码,springmvc和web.xml相关配置和maven相关依赖就不一一列举,最后会附上工程供大家下载。

2.1、获取签名工具类(httpclient和sha1加密)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
package com.luo.util;
 
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
 
public class HttpXmlClient {
 
     public static String post(String url, Map<String, String> params) {
         DefaultHttpClient httpclient = new DefaultHttpClient();
         String body = null ;
         HttpPost post = postForm(url, params);
         body = invoke(httpclient, post);
         httpclient.getConnectionManager().shutdown();
         return body;
     }
 
     public static String get(String url) {
         DefaultHttpClient httpclient = new DefaultHttpClient();
         String body = null ;
         HttpGet get = new HttpGet(url);
         body = invoke(httpclient, get);
         httpclient.getConnectionManager().shutdown();
         return body;
     }
 
     private static String invoke(DefaultHttpClient httpclient,
             HttpUriRequest httpost) {
         HttpResponse response = sendRequest(httpclient, httpost);
         String body = paseResponse(response);
         return body;
     }
 
     private static String paseResponse(HttpResponse response) {
         HttpEntity entity = response.getEntity();
         String charset = EntityUtils.getContentCharSet(entity);
         String body = null ;
         try {
             body = EntityUtils.toString(entity);
         } catch (ParseException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return body;
     }
 
     private static HttpResponse sendRequest(DefaultHttpClient httpclient,
             HttpUriRequest httpost) {
         HttpResponse response = null ;
         try {
             response = httpclient.execute(httpost);
         } catch (ClientProtocolException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return response;
     }
 
     private static HttpPost postForm(String url, Map<String, String> params) {
 
         HttpPost httpost = new HttpPost(url);
         List<NameValuePair> nvps = new ArrayList<NameValuePair>();
 
         Set<String> keySet = params.keySet();
         for (String key : keySet) {
             nvps.add( new BasicNameValuePair(key, params.get(key)));
         }
 
         try {
             httpost.setEntity( new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
 
         return httpost;
     }
 
     public static void main(String[] args) {
 
         //获取access_token
         Map<String, String> params = new HashMap<String, String>();
         params.put( "corpid" , "wx5f24fa0db1819ea2" );
         params.put( "corpsecret" , "uQtWzF0bQtl2KRHX0amekjpq8L0aO96LSpSNfctOBLRbuYPO4DUBhMn0_v2jHS-9" );
         String xml = HttpXmlClient.post( "https://qyapi.weixin.qq.com/cgi-bin/gettoken" ,params);
         JSONObject jsonMap  = JSONObject.fromObject(xml);
         Map<String, String> map = new HashMap<String, String>();
         Iterator<String> it = jsonMap.keys(); 
         while (it.hasNext()) { 
             String key = (String) it.next(); 
             String u = jsonMap.get(key).toString();
             map.put(key, u); 
         }
         String access_token = map.get( "access_token" );
         System.out.println( "access_token=" + access_token);
 
         //获取ticket
         params.put( "access_token" ,access_token);
         xml = HttpXmlClient.post( "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket" ,params);
         jsonMap  = JSONObject.fromObject(xml);
         map = new HashMap<String, String>();
         it = jsonMap.keys(); 
         while (it.hasNext()) { 
             String key = (String) it.next(); 
             String u = jsonMap.get(key).toString();
             map.put(key, u); 
         }
         String jsapi_ticket = map.get( "ticket" );
         System.out.println( "jsapi_ticket=" + jsapi_ticket);
 
         //获取签名signature
         String noncestr = UUID.randomUUID().toString();
         String timestamp = Long.toString(System.currentTimeMillis() / 1000 );
         String url= "http://mp.weixin.qq.com" ;
         String str = "jsapi_ticket=" + jsapi_ticket +
                 "&noncestr=" + noncestr +
                 "&timestamp=" + timestamp +
                 "&url=" + url;
         //sha1加密
         String signature = SHA1(str);
         System.out.println( "noncestr=" + noncestr);
         System.out.println( "timestamp=" + timestamp);
         System.out.println( "signature=" + signature);
         //最终获得调用微信js接口验证需要的三个参数noncestr、timestamp、signature
     }
 
        /**
      * @author:罗国辉
      * @date: 2015年12月17日 上午9:24:43
      * @description: SHA、SHA1加密
      * @parameter:   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 ;
     }
}

2.2、controller代码(尽可能仔细阅读下面的每一行代码,特别是url部分)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.luo.controller;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
import com.luo.util.HttpXmlClient;
 
@Controller 
public class UserController { 
 
     @RequestMapping ( "/" )   
     public ModelAndView getIndex(HttpServletRequest request){ 
 
         ModelAndView mav = new ModelAndView( "index" ); 
         //获取access_token
         Map<String, String> params = new HashMap<String, String>();
         params.put( "corpid" , "wx7099477f2de8aded" );
         params.put( "corpsecret" , "4clWzENvHVmpcyuA4toys0URkfYanIqWtxZ5plbisn6Cd5AVTF0thpaK6UAhjIvN" );
         String xml = HttpXmlClient.post( "https://qyapi.weixin.qq.com/cgi-bin/gettoken" ,params);
         JSONObject jsonMap  = JSONObject.fromObject(xml);
         Map<String, String> map = new HashMap<String, String>();
         Iterator<String> it = jsonMap.keys(); 
         while (it.hasNext()) { 
             String key = (String) it.next(); 
             String u = jsonMap.get(key).toString();
             map.put(key, u); 
         }
         String access_token = map.get( "access_token" );
 
         //获取ticket
         params.put( "access_token" ,access_token);
         xml = HttpXmlClient.post( "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket" ,params);
         jsonMap  = JSONObject.fromObject(xml);
         map = new HashMap<String, String>();
         it = jsonMap.keys(); 
         while (it.hasNext()) { 
             String key = (String) it.next(); 
             String u = jsonMap.get(key).toString();
             map.put(key, u); 
         }
         String jsapi_ticket = map.get( "ticket" );
 
         //获取签名signature
         String noncestr = UUID.randomUUID().toString();
         String timestamp = Long.toString(System.currentTimeMillis() / 1000 );
         //获取请求url
         String path = request.getContextPath();
         //以为我配置的菜单是http://yo.bbdfun.com/first_maven_project/,最后是有"/"的,所以url也加上了"/"
         String url = request.getScheme() + "://" + request.getServerName() +  path + "/" ; 
         String str = "jsapi_ticket=" + jsapi_ticket +
                 "&noncestr=" + noncestr +
                 "&timestamp=" + timestamp +
                 "&url=" + url;
         //sha1加密
         String signature = HttpXmlClient.SHA1(str);
         mav.addObject( "signature" , signature);  
         mav.addObject( "timestamp" , timestamp);  
         mav.addObject( "noncestr" , noncestr);  
         mav.addObject( "appId" , "wx7099477f2de8aded" );
         System.out.println( "jsapi_ticket=" + jsapi_ticket);
         System.out.println( "noncestr=" + noncestr);
         System.out.println( "timestamp=" + timestamp);
         System.out.println( "url=" + url);
         System.out.println( "str=" + str);
         System.out.println( "signature=" + signature);
         return mav;   
 
     }   
}

2.3、前端js代码(尽可能仔细阅读下面的每一行代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %>
<html>
<head>
<script src= "http://res.wx.qq.com/open/js/jweixin-1.0.0.js" ></script>
<script>
     wx.config({
         debug: true , // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
         appId: '${appId}' , // 必填,企业号的唯一标识,此处填写企业号corpid
         timestamp: parseInt( "${timestamp}" , 10 ), // 必填,生成签名的时间戳
         nonceStr: '${noncestr}' , // 必填,生成签名的随机串
         signature: '${signature}' , // 必填,签名,见附录1
         jsApiList: [ 'getLocation' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
     });
     wx.ready(function(){
     });
 
     wx.error(function(res){
     });
</script>
</head>
<body>
<button id= "getBBS" style= "width:1000px;height:600px;font-size:150px;" onclick= "submitOrderInfoClick();" >获取地理位置</button>
</body>
<script type= "text/javascript" >
function submitOrderInfoClick(){
   wx.getLocation({
         success: function (res) {
             alert( "小宝鸽获取地理位置成功,经纬度为:(" + res.latitude + "," + res.longitude + ")" );
         },
         fail: function(error) {
             AlertUtil.error( "获取地理位置失败,请确保开启GPS且允许微信获取您的地理位置!" );
         }
     });
}
</script>
</html>

三、源码下载

http://download.youkuaiyun.com/detail/u013142781/9400470

weixin-java-cp-demo:基于Spring Boot和WxJava实现的微信企业号企业微信放置演示 本项目为,基于Spring Boot ,实现企业微信替代开发功能。更多信息请查阅: : 使用步骤:请注意,本演示为简化代码编译时加入了lombok支持,如果不了解lombok的话,请先学习下相关知识,可以比如阅读;另外,新手遇到问题,请首先阅读主页的常见问题部分,可以少走很多弯路,节省大量时间。 阅读详情

相关推荐

基于STM32与NB-IoT的图书馆座位智能管理系统设计与实现

物联网技术通过传感器、网络和云平台,实现了物理世界的数字化与智能化管理。其核心原理在于利用嵌入式终端采集数据,通过低功耗广域网技术进行可靠传输,最终在云端进行汇聚与分析,从而创造技术价值,实现对资源的精细化、动态化管控。这一技术框架在智慧城市、环境监测、资产追踪等众多领域有广泛应用。本文聚焦于一个典型的应用场景——图书馆座位管理,并深入探讨了如何利用STM32微控制器作为终端核心,结合NB-IoT通信模块与微波雷达传感器,构建一套低功耗、高可靠的实时感知系统。文中详细分析了系统架构、硬件选型考量、软件低功耗

weixin_29190573的博客 306

Java代码实现向企业微信发送消息

这个方法需要你服务器的ip是公网ip,然后需要在企业微信添加信任ipt=N7T8企业微信https://work.weixin.qq.com/wework_admin/register_wx?

LB_bei的博客 5842

微信开发获取地理位置实例(java)

微信开发获取地理位置实例(java),使用环境 eclipse + maven + springmvc,虽然项目名是first_maven_project,但是确实是微信开发实例哈,不要有任何怀疑,免费分享啦,哈哈。实例讲解欢迎访问博主博客http://blog.youkuaiyun.com/u013142781

微信开发笔记

微信初期开发准备以及部分接口开发配置微信配置实体类微信类初始化初始化中各个事件的具体代码门户入口代码微信菜单功能 记录一下 后续会更新 支付和退款 二维码 红包 名片分享 等功能代码 引入一下微信SDK 开发配置 微信配置实体类 litemall.wx 对应yml文件 微信配置 @Data @Configuration @ConfigurationProperties(prefix = "litemall.wx") public class WxProperties { private

weixin_42563880的博客 1324

大疆Livox Mid-70雷达的使用

一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25

LacyExsale的博客 1万+

AutoCAD提示找不到acdb24.dll、AcGe24.dll、AcPal.dll、AcUt.dll怎么办?

在我们安装了AutoCAD 2023版本以后,打开CAD,可能会出现dll文件丢失的情况,如下所示:1、由于找不到acdb24.dll,无法继续执行代码。重新安装程序可能解决此问题。2、由于找不到AcGe24.dll,无法继续执行代码。重新安装程序可能解决此问题。3、由于找不到AcPal.dll,无法继续执行代码。重新安装程序可能解决此问题。4、由于找不到AcUt.dll,无法继续执行代码。重新安装程序可能解决此问题。遇到AutoCAD启动系统错误,由于找不到dll文件该怎么处理呢?

huoxu369的博客 1万+

Java通过微信公众号获取地理位置信息

1.绑定js的回调域名 这个就不多说了,百度一大把 ,不会的去这儿 [微信官方文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html) 2.js代码(看注释) 如果没有看过官方文档不建议看这个,看过文档的直接可以用这个使用了,结果还是比较精准的 js文件中要引入微信官方js <s...

乐乐的博客 2101

解决com.kingbase8.util.KSQLException: This _connection has been closed.

一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend. java.net.SocketTimeoutException: Read timed out.

qq_38127559的博客 2757

java 微信获取用户地理位置_微信公众平台开发(106) 网页获取用户地理位置

关键字:微信公众平台 JSSDK获取地理位置接口网页获取用户地理位置getLocation作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息。本文分为以下二个部分:生成JS-SDK权限验证签名使用地理位置接口获取坐标一、微信JS-SD...

weixin_39995297的博客 586

避坑指南:Zephyr RTOS与nRF Connect SDK环境搭建常见错误及解决方案

本文详细解析了Zephyr RTOS与nRF Connect SDK环境搭建过程中的常见错误及解决方案,涵盖网络问题、代理设置、SEGGER Embedded Studio配置、分支切换等关键环节。针对开发者实际遇到的痛点问题,提供了一系列实用技巧和深度排错方法,帮助高效完成NCS开发环境部署。

weixin_28685287的博客 172

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6261

小程序使用经纬度通过腾讯位置服务、小程序jdk、逆地址解析(位置描述)获取到详细信息

【代码】小程序使用经纬度通过腾讯位置服务、小程序jdk、逆地址解析(位置描述)获取到详细信息。

Xiang_Gong_Ya_的博客 603

使用AI编写测试用例——详细教程

现阶段AI还不能完全替代人工测试用例编写,但如果把AI当做一个提高效率的工具,它将会是一个很强大的辅助。

公众号|软件测试老吴 3万+

java 微信获取用户地理位置_微信开发获取地理位置实例(java,非常详细,附工程源码)...

packagecom.luo.util;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.util.ArrayList;import...

weixin_39877504的博客 565

别再手动搬数据了!用rclone一键同步MinIO到华为云OBS的保姆级教程

本文详细介绍了如何使用rclone工具实现MinIO到华为云OBS的数据迁移,包括环境准备、双端配置、迁移前验证、实战迁移及后期监控等步骤。通过rclone的增量同步、断点续传等功能,确保数据迁移高效安全,特别适合需要跨云存储迁移的用户。

weixin_30839881的博客 523

面试篇 - LoRA(Low-Rank Adaptation) 原理

输出示例:trainable params: 262,144 || all params: 6,742,016,000 || trainable%: 0.0039。论文实验显示:零初始化 BB 可使初始损失与预训练模型相差不足0.1%,而非零初始化可能差50%+。若初始 ΔW≠0,模型可能立即偏离预训练学到的知识(如GPT-3突然忘记如何造句)。:如同汽车改装,先保持原厂配置(W),再逐步加装新部件(ΔW),避免直接飙车失控。:大模型的权重变化矩阵 ΔWΔW 通常是低秩的(少数主成分主导变化)。

qq_60245590的博客 1152

微信开发之如何根据经纬度获取所在的地点信息

欢迎关注微信服务号:小灰熊    package com.lwz.wx.util; //需要导入的包 在网上都是比较容易找到的 import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; import net.sf.json.JSONArray;

欢迎关注 微趣闻 3722

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

手把手教你springboot企业微信开发(二)

手把手教你springboot企业微信开发(二)1、企业微信开发第一步2、weixin-java-cp-demo-master1)、引入thymeleaf改造项目2)增加Configuration3)回到企业号4)穿透内外网5)完善 从这一篇开始,开始从实际项目探索企业微信开发。 1、企业微信开发第一步 看一下企业微信的开发者文档: 企业微信开发者文档. 在开发文档的首页中,我们看到:企业&定制化服务商开发流程 1. 获取企业号CorpID&Secret: 企业管理员建立管理组,获取Corp

miaozhicheng1990的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用微信的JSDK方法来获取定位的经纬度,本地测试方法总结

1.开启D:\soft\natapp的应用 2.在项目的文件夹F:\city_cloud\zhoushan\zhoushan-wx-public-server\weixin中打开cmd ,输入puer -p 80 3.在代理的平台打开链接 http://xiaxiaoxian.natapp1.cc /* 前端自己合成签名的要素 */ /** * 保存token */ va...

前端小贤 2235

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

微信JSSDK获取用户地理位置(经纬度)

最近一直在做公众号开发,这两天公司让我做一个类似钉钉打卡的功能,这时候我需要获取到用户的经纬度, 但是在这之前我只知道在关注微信公众号的时候获取用户地理位置:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140841 但是这时候在我这里无法使用,我需要在微信公众号的网页中获取用户的地理位置(经纬度) 最后发现,原...

huaweichenai的博客 1万+

手把手教你使用java对接微信公众号-获取地理位置信息

公众号需要定位当前用户的地址位置,需要通过签名后返回的数据,前端将参数回调到微信服务器获取地理位置信息,官方文档说明(https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html)。 这里会告诉你对接JSSDK使用步骤。 可以看出调用JSSDK需要后端提供四个参数: appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '',

liangshitian的博客 4546

java 微信获取用户地理位置_Java微信公众平台之获取地理位置

本部分需要用到微信的JS-SDK,微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。一、JS-SDK引入1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名...

weixin_29655587的博客 857
上一篇: Spring 实践:AOP
下一篇: Java线程面试题 Top 50
木木那年
博客等级 码龄12年 37粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值